From 2c26f52cc9ab0a82688c14ecad75fa3a68fdbbbc Mon Sep 17 00:00:00 2001 From: Ashwin Kumar Date: Thu, 5 Mar 2026 16:02:35 +0100 Subject: [PATCH] feat(gitops): add nxtgauge backend k8s manifests and argocd app --- apps/nxtgauge-backend/base/configmap.yaml | 8 +++ apps/nxtgauge-backend/base/deployment.yaml | 52 +++++++++++++++++++ apps/nxtgauge-backend/base/ingress.yaml | 18 +++++++ apps/nxtgauge-backend/base/kustomization.yaml | 9 ++++ apps/nxtgauge-backend/base/namespace.yaml | 4 ++ apps/nxtgauge-backend/base/secret.yaml | 9 ++++ apps/nxtgauge-backend/base/service.yaml | 16 ++++++ .../overlays/prod/kustomization.yaml | 6 +++ .../overlays/prod/replicas-patch.yaml | 7 +++ argocd/nxtgauge-backend-application.yaml | 20 +++++++ 10 files changed, 149 insertions(+) create mode 100644 apps/nxtgauge-backend/base/configmap.yaml create mode 100644 apps/nxtgauge-backend/base/deployment.yaml create mode 100644 apps/nxtgauge-backend/base/ingress.yaml create mode 100644 apps/nxtgauge-backend/base/kustomization.yaml create mode 100644 apps/nxtgauge-backend/base/namespace.yaml create mode 100644 apps/nxtgauge-backend/base/secret.yaml create mode 100644 apps/nxtgauge-backend/base/service.yaml create mode 100644 apps/nxtgauge-backend/overlays/prod/kustomization.yaml create mode 100644 apps/nxtgauge-backend/overlays/prod/replicas-patch.yaml create mode 100644 argocd/nxtgauge-backend-application.yaml diff --git a/apps/nxtgauge-backend/base/configmap.yaml b/apps/nxtgauge-backend/base/configmap.yaml new file mode 100644 index 0000000..8702cf6 --- /dev/null +++ b/apps/nxtgauge-backend/base/configmap.yaml @@ -0,0 +1,8 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: nxtgauge-backend-config + namespace: nxtgauge +data: + NODE_ENV: "production" + PORT: "2002" diff --git a/apps/nxtgauge-backend/base/deployment.yaml b/apps/nxtgauge-backend/base/deployment.yaml new file mode 100644 index 0000000..cced0b9 --- /dev/null +++ b/apps/nxtgauge-backend/base/deployment.yaml @@ -0,0 +1,52 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: nxtgauge-backend + namespace: nxtgauge + labels: + app: nxtgauge-backend +spec: + replicas: 2 + selector: + matchLabels: + app: nxtgauge-backend + template: + metadata: + labels: + app: nxtgauge-backend + spec: + containers: + - name: backend + image: ghcr.io/traceworks2023/nxtgauge-backend:latest + imagePullPolicy: IfNotPresent + ports: + - containerPort: 2002 + name: http + envFrom: + - configMapRef: + name: nxtgauge-backend-config + - secretRef: + name: nxtgauge-backend-secrets + readinessProbe: + httpGet: + path: /health + port: 2002 + initialDelaySeconds: 5 + periodSeconds: 10 + timeoutSeconds: 2 + failureThreshold: 3 + livenessProbe: + httpGet: + path: /health + port: 2002 + initialDelaySeconds: 15 + periodSeconds: 20 + timeoutSeconds: 2 + failureThreshold: 3 + resources: + requests: + cpu: 100m + memory: 128Mi + limits: + cpu: 500m + memory: 512Mi diff --git a/apps/nxtgauge-backend/base/ingress.yaml b/apps/nxtgauge-backend/base/ingress.yaml new file mode 100644 index 0000000..043a964 --- /dev/null +++ b/apps/nxtgauge-backend/base/ingress.yaml @@ -0,0 +1,18 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: nxtgauge-backend + namespace: nxtgauge +spec: + ingressClassName: traefik + rules: + - host: api.nxtgauge.com + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: nxtgauge-backend + port: + number: 80 diff --git a/apps/nxtgauge-backend/base/kustomization.yaml b/apps/nxtgauge-backend/base/kustomization.yaml new file mode 100644 index 0000000..dffdde5 --- /dev/null +++ b/apps/nxtgauge-backend/base/kustomization.yaml @@ -0,0 +1,9 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: + - namespace.yaml + - configmap.yaml + - secret.yaml + - deployment.yaml + - service.yaml + - ingress.yaml diff --git a/apps/nxtgauge-backend/base/namespace.yaml b/apps/nxtgauge-backend/base/namespace.yaml new file mode 100644 index 0000000..358f183 --- /dev/null +++ b/apps/nxtgauge-backend/base/namespace.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: nxtgauge diff --git a/apps/nxtgauge-backend/base/secret.yaml b/apps/nxtgauge-backend/base/secret.yaml new file mode 100644 index 0000000..58e7307 --- /dev/null +++ b/apps/nxtgauge-backend/base/secret.yaml @@ -0,0 +1,9 @@ +apiVersion: v1 +kind: Secret +metadata: + name: nxtgauge-backend-secrets + namespace: nxtgauge +type: Opaque +stringData: + DATABASE_URL: "REPLACE_ME" + JWT_SECRET: "REPLACE_ME" diff --git a/apps/nxtgauge-backend/base/service.yaml b/apps/nxtgauge-backend/base/service.yaml new file mode 100644 index 0000000..ecc9051 --- /dev/null +++ b/apps/nxtgauge-backend/base/service.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: Service +metadata: + name: nxtgauge-backend + namespace: nxtgauge + labels: + app: nxtgauge-backend +spec: + type: ClusterIP + selector: + app: nxtgauge-backend + ports: + - name: http + port: 80 + targetPort: 2002 + protocol: TCP diff --git a/apps/nxtgauge-backend/overlays/prod/kustomization.yaml b/apps/nxtgauge-backend/overlays/prod/kustomization.yaml new file mode 100644 index 0000000..bea6d41 --- /dev/null +++ b/apps/nxtgauge-backend/overlays/prod/kustomization.yaml @@ -0,0 +1,6 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: + - ../../base +patchesStrategicMerge: + - replicas-patch.yaml diff --git a/apps/nxtgauge-backend/overlays/prod/replicas-patch.yaml b/apps/nxtgauge-backend/overlays/prod/replicas-patch.yaml new file mode 100644 index 0000000..08b1b78 --- /dev/null +++ b/apps/nxtgauge-backend/overlays/prod/replicas-patch.yaml @@ -0,0 +1,7 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: nxtgauge-backend + namespace: nxtgauge +spec: + replicas: 2 diff --git a/argocd/nxtgauge-backend-application.yaml b/argocd/nxtgauge-backend-application.yaml new file mode 100644 index 0000000..e5c03d2 --- /dev/null +++ b/argocd/nxtgauge-backend-application.yaml @@ -0,0 +1,20 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: nxtgauge-backend + namespace: argocd +spec: + project: default + source: + repoURL: https://github.com/Traceworks2023/nxtgauge-gitops.git + targetRevision: main + path: apps/nxtgauge-backend/overlays/prod + destination: + server: https://kubernetes.default.svc + namespace: nxtgauge + syncPolicy: + automated: + prune: true + selfHeal: true + syncOptions: + - CreateNamespace=true