From 836b7059c954cfc9e53bd12e5ca765f2eb449fa8 Mon Sep 17 00:00:00 2001 From: Madhavi776 Date: Fri, 29 May 2026 13:30:18 -0400 Subject: [PATCH 1/8] Update index.ts Initialize the Namespace config --- kubernetes-ts-guestbook/simple/index.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/kubernetes-ts-guestbook/simple/index.ts b/kubernetes-ts-guestbook/simple/index.ts index 048eaab53..e957eaa2c 100644 --- a/kubernetes-ts-guestbook/simple/index.ts +++ b/kubernetes-ts-guestbook/simple/index.ts @@ -12,6 +12,13 @@ const isMinikube = config.getBoolean("isMinikube"); // REDIS LEADER. // +// Initializing the Namespace +const monitoringNs = new k8s.core.v1.Namespace("monitoring", { + metadata: { + name: "monitoring", + }, +}); + const redisLeaderLabels = { app: "redis-leader" }; const redisLeaderDeployment = new k8s.apps.v1.Deployment("redis-leader", { spec: { From 77859dd6dc78cbb6edb3f5f8d9d8372cfbfb8272 Mon Sep 17 00:00:00 2001 From: Madhavi776 Date: Fri, 29 May 2026 13:32:22 -0400 Subject: [PATCH 2/8] adding prometheus conf inititalize prometheus config --- kubernetes-ts-guestbook/simple/index.ts | 26 +++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/kubernetes-ts-guestbook/simple/index.ts b/kubernetes-ts-guestbook/simple/index.ts index e957eaa2c..c05ce1654 100644 --- a/kubernetes-ts-guestbook/simple/index.ts +++ b/kubernetes-ts-guestbook/simple/index.ts @@ -19,6 +19,32 @@ const monitoringNs = new k8s.core.v1.Namespace("monitoring", { }, }); +// / initialize prometheus + +const prometheus = new k8s.helm.v3.Chart("prometheus", { + + chart: "kube-prometheus-stack", + + fetchOpts: { + repo: "https://prometheus-community.github.io/helm-charts", + }, + + namespace: monitoringNs.metadata.name, + + values: { + grafana: { + enabled: false, + }, + + prometheus: { + prometheusSpec: { + serviceMonitorSelectorNilUsesHelmValues: false, + }, + }, + }, +}); + + const redisLeaderLabels = { app: "redis-leader" }; const redisLeaderDeployment = new k8s.apps.v1.Deployment("redis-leader", { spec: { From 8c5eaa91fcb4c83f01601a1ef51c14b496856731 Mon Sep 17 00:00:00 2001 From: Madhavi776 Date: Fri, 29 May 2026 13:34:30 -0400 Subject: [PATCH 3/8] grafana init add grafana conf --- kubernetes-ts-guestbook/simple/index.ts | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/kubernetes-ts-guestbook/simple/index.ts b/kubernetes-ts-guestbook/simple/index.ts index c05ce1654..d568e274c 100644 --- a/kubernetes-ts-guestbook/simple/index.ts +++ b/kubernetes-ts-guestbook/simple/index.ts @@ -44,6 +44,30 @@ const prometheus = new k8s.helm.v3.Chart("prometheus", { }, }); +// grafana initializaation + +const grafana = new k8s.helm.v3.Chart("grafana", { + + chart: "grafana", + + fetchOpts: { + repo: "https://grafana.github.io/helm-charts", + }, + + namespace: monitoringNs.metadata.name, + + values: { + + adminUser: "admin", + adminPassword: "admin123", + + service: { + type: "NodePort", + nodePort: 32000, + }, + }, +}); + const redisLeaderLabels = { app: "redis-leader" }; const redisLeaderDeployment = new k8s.apps.v1.Deployment("redis-leader", { From abfa78d596a2b14945de72c3f4832029436acd23 Mon Sep 17 00:00:00 2001 From: Madhavi776 Date: Fri, 29 May 2026 13:35:01 -0400 Subject: [PATCH 4/8] Update index.ts --- kubernetes-ts-guestbook/simple/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kubernetes-ts-guestbook/simple/index.ts b/kubernetes-ts-guestbook/simple/index.ts index d568e274c..7fc842e10 100644 --- a/kubernetes-ts-guestbook/simple/index.ts +++ b/kubernetes-ts-guestbook/simple/index.ts @@ -59,7 +59,7 @@ const grafana = new k8s.helm.v3.Chart("grafana", { values: { adminUser: "admin", - adminPassword: "admin123", + adminPassword: "admin", service: { type: "NodePort", From e85f54462ff746c03c0e3010382519d039a402b9 Mon Sep 17 00:00:00 2001 From: Madhavi776 Date: Fri, 29 May 2026 13:42:34 -0400 Subject: [PATCH 5/8] add prometheus annotations add prometheus annotation config --- kubernetes-ts-guestbook/simple/index.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/kubernetes-ts-guestbook/simple/index.ts b/kubernetes-ts-guestbook/simple/index.ts index 7fc842e10..15f361f0d 100644 --- a/kubernetes-ts-guestbook/simple/index.ts +++ b/kubernetes-ts-guestbook/simple/index.ts @@ -146,7 +146,17 @@ const frontendDeployment = new k8s.apps.v1.Deployment("frontend", { selector: { matchLabels: frontendLabels }, replicas: 3, template: { - metadata: { labels: frontendLabels }, + //metadata: { labels: frontendLabels }, + metadata: { + + labels: frontendLabels, + + annotations: { + "prometheus.io/scrape": "true", + "prometheus.io/port": "80", + "prometheus.io/path": "/metrics", + }, +}, spec: { containers: [ { From 2f9084b81917a47748fcb7618ad4efcbb6de34ac Mon Sep 17 00:00:00 2001 From: Madhavi776 Date: Fri, 29 May 2026 13:49:22 -0400 Subject: [PATCH 6/8] feat: Add grafana service monitor adding grafana service monitor --- kubernetes-ts-guestbook/simple/index.ts | 35 +++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/kubernetes-ts-guestbook/simple/index.ts b/kubernetes-ts-guestbook/simple/index.ts index 15f361f0d..525b622b9 100644 --- a/kubernetes-ts-guestbook/simple/index.ts +++ b/kubernetes-ts-guestbook/simple/index.ts @@ -68,6 +68,41 @@ const grafana = new k8s.helm.v3.Chart("grafana", { }, }); +// Add Grafana service monitor + +const serviceMonitor = new k8s.apiextensions.CustomResource("guestbook-monitor", { + + apiVersion: "monitoring.coreos.com/v1", + + kind: "ServiceMonitor", + + metadata: { + name: "guestbook-monitor", + namespace: "monitoring", + }, + + spec: { + + selector: { + matchLabels: { + app: "frontend", + }, + }, + + namespaceSelector: { + any: true, + }, + + endpoints: [ + { + port: "http", + path: "/metrics", + interval: "15s", + }, + ], + }, +}); + const redisLeaderLabels = { app: "redis-leader" }; const redisLeaderDeployment = new k8s.apps.v1.Deployment("redis-leader", { From e03765e3e7b32f50d638734a5ada5323d8c607ed Mon Sep 17 00:00:00 2001 From: Madhavi776 Date: Fri, 29 May 2026 13:52:10 -0400 Subject: [PATCH 7/8] added pulumi output vars --- kubernetes-ts-guestbook/simple/index.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/kubernetes-ts-guestbook/simple/index.ts b/kubernetes-ts-guestbook/simple/index.ts index 525b622b9..2bfae1f90 100644 --- a/kubernetes-ts-guestbook/simple/index.ts +++ b/kubernetes-ts-guestbook/simple/index.ts @@ -227,3 +227,10 @@ if (isMinikube) { } else { frontendIp = frontendService.status.loadBalancer.ingress[0].ip; } + +// setting up pulumi outputs +export const grafanaUrl = "http://localhost:32000"; + +export const grafanaUser = "admin"; + +export const grafanaPassword = "admin"; From 41827a1253d8d89eaf604d638c1dcd2634555890 Mon Sep 17 00:00:00 2001 From: Madhavi776 Date: Fri, 29 May 2026 15:06:41 -0400 Subject: [PATCH 8/8] Update index.ts correcting file --- kubernetes-ts-guestbook/simple/index.ts | 51 ++++++++++++------------- 1 file changed, 25 insertions(+), 26 deletions(-) diff --git a/kubernetes-ts-guestbook/simple/index.ts b/kubernetes-ts-guestbook/simple/index.ts index 2bfae1f90..f6ee81a13 100644 --- a/kubernetes-ts-guestbook/simple/index.ts +++ b/kubernetes-ts-guestbook/simple/index.ts @@ -8,18 +8,13 @@ import * as pulumi from "@pulumi/pulumi"; const config = new pulumi.Config(); const isMinikube = config.getBoolean("isMinikube"); -// -// REDIS LEADER. -// - -// Initializing the Namespace const monitoringNs = new k8s.core.v1.Namespace("monitoring", { metadata: { name: "monitoring", }, }); -// / initialize prometheus +// Prometheus initialization const prometheus = new k8s.helm.v3.Chart("prometheus", { @@ -44,7 +39,7 @@ const prometheus = new k8s.helm.v3.Chart("prometheus", { }, }); -// grafana initializaation +// Grafana implementation const grafana = new k8s.helm.v3.Chart("grafana", { @@ -59,7 +54,7 @@ const grafana = new k8s.helm.v3.Chart("grafana", { values: { adminUser: "admin", - adminPassword: "admin", + adminPassword: "admin123", service: { type: "NodePort", @@ -68,7 +63,7 @@ const grafana = new k8s.helm.v3.Chart("grafana", { }, }); -// Add Grafana service monitor +// Grafana Monitor Service const serviceMonitor = new k8s.apiextensions.CustomResource("guestbook-monitor", { @@ -104,6 +99,10 @@ const serviceMonitor = new k8s.apiextensions.CustomResource("guestbook-monitor", }); +// +// REDIS LEADER. +// + const redisLeaderLabels = { app: "redis-leader" }; const redisLeaderDeployment = new k8s.apps.v1.Deployment("redis-leader", { spec: { @@ -177,21 +176,20 @@ const redisReplicaService = new k8s.core.v1.Service("redis-replica", { const frontendLabels = { app: "frontend" }; const frontendDeployment = new k8s.apps.v1.Deployment("frontend", { - spec: { - selector: { matchLabels: frontendLabels }, - replicas: 3, - template: { - //metadata: { labels: frontendLabels }, - metadata: { - - labels: frontendLabels, - - annotations: { - "prometheus.io/scrape": "true", - "prometheus.io/port": "80", - "prometheus.io/path": "/metrics", - }, -}, + spec: { + selector: { matchLabels: frontendLabels }, + replicas: 3, + template: { + metadata: { + + labels: frontendLabels, + + annotations: { + "prometheus.io/scrape": "true", + "prometheus.io/port": "80", + "prometheus.io/path": "/metrics", + }, + }, spec: { containers: [ { @@ -228,9 +226,10 @@ if (isMinikube) { frontendIp = frontendService.status.loadBalancer.ingress[0].ip; } -// setting up pulumi outputs + +// Add pulumi vars export const grafanaUrl = "http://localhost:32000"; export const grafanaUser = "admin"; -export const grafanaPassword = "admin"; +export const grafanaPassword = "admin123";