feat: add K8s manifests and ArgoCD Applications for new Rust/SolidStart stack

Adds Kustomize base+prod overlays for nxtgauge-frontend-solid,
nxtgauge-admin-solid, and nxtgauge-backend-rust (18 services).
ArgoCD Image Updater configured for auto-deploy on high-performance-latest tag.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Ashwin Kumar 2026-04-09 00:48:46 +02:00
parent 941cb999ec
commit abfa43f85f
63 changed files with 1760 additions and 0 deletions

View file

@ -0,0 +1,9 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: nxtgauge-admin-solid-config
namespace: nxtgauge
data:
NODE_ENV: "production"
PORT: "3000"
GATEWAY_URL: "http://nxtgauge-rust-gateway:8000"

View file

@ -0,0 +1,52 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: nxtgauge-admin-solid
namespace: nxtgauge
labels:
app: nxtgauge-admin-solid
spec:
replicas: 1
selector:
matchLabels:
app: nxtgauge-admin-solid
template:
metadata:
labels:
app: nxtgauge-admin-solid
spec:
containers:
- name: admin-solid
image: ghcr.io/traceworks2023/nxtgauge-admin-solid
imagePullPolicy: Always
ports:
- containerPort: 3000
name: http
envFrom:
- configMapRef:
name: nxtgauge-admin-solid-config
- secretRef:
name: nxtgauge-admin-solid-secrets
readinessProbe:
httpGet:
path: /
port: 3000
initialDelaySeconds: 10
periodSeconds: 10
timeoutSeconds: 3
failureThreshold: 3
livenessProbe:
httpGet:
path: /
port: 3000
initialDelaySeconds: 20
periodSeconds: 20
timeoutSeconds: 3
failureThreshold: 3
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 500m
memory: 512Mi

View file

@ -0,0 +1,18 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: nxtgauge-admin-solid
namespace: nxtgauge
spec:
ingressClassName: traefik
rules:
- host: admin.nxtgauge.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: nxtgauge-admin-solid
port:
number: 80

View file

@ -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

View file

@ -0,0 +1,4 @@
apiVersion: v1
kind: Namespace
metadata:
name: nxtgauge

View file

@ -0,0 +1,12 @@
apiVersion: v1
kind: Secret
metadata:
name: nxtgauge-admin-solid-secrets
namespace: nxtgauge
type: Opaque
stringData:
SMTP_HOST: "mail.nxtgauge.com"
SMTP_PORT: "587"
SMTP_USER: "noreply@nxtgauge.com"
SMTP_PASS: "Nxtguage@1128"
SMTP_FROM: "noreply@nxtgauge.com"

View file

@ -0,0 +1,16 @@
apiVersion: v1
kind: Service
metadata:
name: nxtgauge-admin-solid
namespace: nxtgauge
labels:
app: nxtgauge-admin-solid
spec:
type: ClusterIP
selector:
app: nxtgauge-admin-solid
ports:
- name: http
port: 80
targetPort: 3000
protocol: TCP

View file

@ -0,0 +1,9 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../../base
patchesStrategicMerge:
- replicas-patch.yaml
images:
- name: ghcr.io/traceworks2023/nxtgauge-admin-solid
newTag: high-performance-latest

View file

@ -0,0 +1,7 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: nxtgauge-admin-solid
namespace: nxtgauge
spec:
replicas: 1

View file

@ -0,0 +1,52 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: nxtgauge-rust-catering-services
namespace: nxtgauge
labels:
app: nxtgauge-rust-catering-services
spec:
replicas: 1
selector:
matchLabels:
app: nxtgauge-rust-catering-services
template:
metadata:
labels:
app: nxtgauge-rust-catering-services
spec:
containers:
- name: catering_services
image: ghcr.io/traceworks2023/nxtgauge-rust-catering-services
imagePullPolicy: Always
ports:
- containerPort: 8093
name: http
envFrom:
- configMapRef:
name: nxtgauge-backend-rust-config
- secretRef:
name: nxtgauge-backend-rust-secrets
readinessProbe:
httpGet:
path: /health
port: 8093
initialDelaySeconds: 10
periodSeconds: 10
timeoutSeconds: 3
failureThreshold: 3
livenessProbe:
httpGet:
path: /health
port: 8093
initialDelaySeconds: 20
periodSeconds: 20
timeoutSeconds: 3
failureThreshold: 5
resources:
requests:
cpu: 50m
memory: 64Mi
limits:
cpu: 500m
memory: 256Mi

View file

@ -0,0 +1,16 @@
apiVersion: v1
kind: Service
metadata:
name: nxtgauge-rust-catering-services
namespace: nxtgauge
labels:
app: nxtgauge-rust-catering-services
spec:
type: ClusterIP
selector:
app: nxtgauge-rust-catering-services
ports:
- name: http
port: 8093
targetPort: 8093
protocol: TCP

View file

@ -0,0 +1,52 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: nxtgauge-rust-companies
namespace: nxtgauge
labels:
app: nxtgauge-rust-companies
spec:
replicas: 1
selector:
matchLabels:
app: nxtgauge-rust-companies
template:
metadata:
labels:
app: nxtgauge-rust-companies
spec:
containers:
- name: companies
image: ghcr.io/traceworks2023/nxtgauge-rust-companies
imagePullPolicy: Always
ports:
- containerPort: 8081
name: http
envFrom:
- configMapRef:
name: nxtgauge-backend-rust-config
- secretRef:
name: nxtgauge-backend-rust-secrets
readinessProbe:
httpGet:
path: /health
port: 8081
initialDelaySeconds: 10
periodSeconds: 10
timeoutSeconds: 3
failureThreshold: 3
livenessProbe:
httpGet:
path: /health
port: 8081
initialDelaySeconds: 20
periodSeconds: 20
timeoutSeconds: 3
failureThreshold: 5
resources:
requests:
cpu: 50m
memory: 64Mi
limits:
cpu: 500m
memory: 256Mi

View file

@ -0,0 +1,16 @@
apiVersion: v1
kind: Service
metadata:
name: nxtgauge-rust-companies
namespace: nxtgauge
labels:
app: nxtgauge-rust-companies
spec:
type: ClusterIP
selector:
app: nxtgauge-rust-companies
ports:
- name: http
port: 8081
targetPort: 8081
protocol: TCP

View file

@ -0,0 +1,26 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: nxtgauge-backend-rust-config
namespace: nxtgauge
data:
RUST_LOG: "info"
PORT: "8000"
FRONTEND_URL: "https://nxtgauge.com"
ADMIN_URL: "https://admin.nxtgauge.com"
USERS_SERVICE_URL: "http://nxtgauge-rust-users:8080"
COMPANIES_SERVICE_URL: "http://nxtgauge-rust-companies:8081"
JOB_SEEKERS_SERVICE_URL: "http://nxtgauge-rust-job-seekers:8082"
CUSTOMERS_SERVICE_URL: "http://nxtgauge-rust-customers:8083"
PAYMENTS_SERVICE_URL: "http://nxtgauge-rust-payments:8094"
EMPLOYEES_SERVICE_URL: "http://nxtgauge-rust-employees:8096"
PHOTOGRAPHERS_SERVICE_URL: "http://nxtgauge-rust-photographers:8085"
MAKEUP_ARTISTS_SERVICE_URL: "http://nxtgauge-rust-makeup-artists:8086"
TUTORS_SERVICE_URL: "http://nxtgauge-rust-tutors:8087"
DEVELOPERS_SERVICE_URL: "http://nxtgauge-rust-developers:8088"
VIDEO_EDITORS_SERVICE_URL: "http://nxtgauge-rust-video-editors:8089"
GRAPHIC_DESIGNERS_SERVICE_URL: "http://nxtgauge-rust-graphic-designers:8090"
SOCIAL_MEDIA_MANAGERS_SERVICE_URL: "http://nxtgauge-rust-social-media-managers:8091"
FITNESS_TRAINERS_SERVICE_URL: "http://nxtgauge-rust-fitness-trainers:8092"
CATERING_SERVICES_SERVICE_URL: "http://nxtgauge-rust-catering-services:8093"
UGC_CONTENT_CREATORS_SERVICE_URL: "http://nxtgauge-rust-ugc-content-creators:8095"

View file

@ -0,0 +1,33 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: nxtgauge-rust-cron
namespace: nxtgauge
labels:
app: nxtgauge-rust-cron
spec:
replicas: 1
selector:
matchLabels:
app: nxtgauge-rust-cron
template:
metadata:
labels:
app: nxtgauge-rust-cron
spec:
containers:
- name: cron
image: ghcr.io/traceworks2023/nxtgauge-rust-cron
imagePullPolicy: Always
envFrom:
- configMapRef:
name: nxtgauge-backend-rust-config
- secretRef:
name: nxtgauge-backend-rust-secrets
resources:
requests:
cpu: 50m
memory: 64Mi
limits:
cpu: 200m
memory: 128Mi

View file

@ -0,0 +1,52 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: nxtgauge-rust-customers
namespace: nxtgauge
labels:
app: nxtgauge-rust-customers
spec:
replicas: 1
selector:
matchLabels:
app: nxtgauge-rust-customers
template:
metadata:
labels:
app: nxtgauge-rust-customers
spec:
containers:
- name: customers
image: ghcr.io/traceworks2023/nxtgauge-rust-customers
imagePullPolicy: Always
ports:
- containerPort: 8083
name: http
envFrom:
- configMapRef:
name: nxtgauge-backend-rust-config
- secretRef:
name: nxtgauge-backend-rust-secrets
readinessProbe:
httpGet:
path: /health
port: 8083
initialDelaySeconds: 10
periodSeconds: 10
timeoutSeconds: 3
failureThreshold: 3
livenessProbe:
httpGet:
path: /health
port: 8083
initialDelaySeconds: 20
periodSeconds: 20
timeoutSeconds: 3
failureThreshold: 5
resources:
requests:
cpu: 50m
memory: 64Mi
limits:
cpu: 500m
memory: 256Mi

View file

@ -0,0 +1,16 @@
apiVersion: v1
kind: Service
metadata:
name: nxtgauge-rust-customers
namespace: nxtgauge
labels:
app: nxtgauge-rust-customers
spec:
type: ClusterIP
selector:
app: nxtgauge-rust-customers
ports:
- name: http
port: 8083
targetPort: 8083
protocol: TCP

View file

@ -0,0 +1,52 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: nxtgauge-rust-developers
namespace: nxtgauge
labels:
app: nxtgauge-rust-developers
spec:
replicas: 1
selector:
matchLabels:
app: nxtgauge-rust-developers
template:
metadata:
labels:
app: nxtgauge-rust-developers
spec:
containers:
- name: developers
image: ghcr.io/traceworks2023/nxtgauge-rust-developers
imagePullPolicy: Always
ports:
- containerPort: 8088
name: http
envFrom:
- configMapRef:
name: nxtgauge-backend-rust-config
- secretRef:
name: nxtgauge-backend-rust-secrets
readinessProbe:
httpGet:
path: /health
port: 8088
initialDelaySeconds: 10
periodSeconds: 10
timeoutSeconds: 3
failureThreshold: 3
livenessProbe:
httpGet:
path: /health
port: 8088
initialDelaySeconds: 20
periodSeconds: 20
timeoutSeconds: 3
failureThreshold: 5
resources:
requests:
cpu: 50m
memory: 64Mi
limits:
cpu: 500m
memory: 256Mi

View file

@ -0,0 +1,16 @@
apiVersion: v1
kind: Service
metadata:
name: nxtgauge-rust-developers
namespace: nxtgauge
labels:
app: nxtgauge-rust-developers
spec:
type: ClusterIP
selector:
app: nxtgauge-rust-developers
ports:
- name: http
port: 8088
targetPort: 8088
protocol: TCP

View file

@ -0,0 +1,52 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: nxtgauge-rust-employees
namespace: nxtgauge
labels:
app: nxtgauge-rust-employees
spec:
replicas: 1
selector:
matchLabels:
app: nxtgauge-rust-employees
template:
metadata:
labels:
app: nxtgauge-rust-employees
spec:
containers:
- name: employees
image: ghcr.io/traceworks2023/nxtgauge-rust-employees
imagePullPolicy: Always
ports:
- containerPort: 8096
name: http
envFrom:
- configMapRef:
name: nxtgauge-backend-rust-config
- secretRef:
name: nxtgauge-backend-rust-secrets
readinessProbe:
httpGet:
path: /health
port: 8096
initialDelaySeconds: 10
periodSeconds: 10
timeoutSeconds: 3
failureThreshold: 3
livenessProbe:
httpGet:
path: /health
port: 8096
initialDelaySeconds: 20
periodSeconds: 20
timeoutSeconds: 3
failureThreshold: 5
resources:
requests:
cpu: 50m
memory: 64Mi
limits:
cpu: 500m
memory: 256Mi

View file

@ -0,0 +1,16 @@
apiVersion: v1
kind: Service
metadata:
name: nxtgauge-rust-employees
namespace: nxtgauge
labels:
app: nxtgauge-rust-employees
spec:
type: ClusterIP
selector:
app: nxtgauge-rust-employees
ports:
- name: http
port: 8096
targetPort: 8096
protocol: TCP

View file

@ -0,0 +1,52 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: nxtgauge-rust-fitness-trainers
namespace: nxtgauge
labels:
app: nxtgauge-rust-fitness-trainers
spec:
replicas: 1
selector:
matchLabels:
app: nxtgauge-rust-fitness-trainers
template:
metadata:
labels:
app: nxtgauge-rust-fitness-trainers
spec:
containers:
- name: fitness_trainers
image: ghcr.io/traceworks2023/nxtgauge-rust-fitness-trainers
imagePullPolicy: Always
ports:
- containerPort: 8092
name: http
envFrom:
- configMapRef:
name: nxtgauge-backend-rust-config
- secretRef:
name: nxtgauge-backend-rust-secrets
readinessProbe:
httpGet:
path: /health
port: 8092
initialDelaySeconds: 10
periodSeconds: 10
timeoutSeconds: 3
failureThreshold: 3
livenessProbe:
httpGet:
path: /health
port: 8092
initialDelaySeconds: 20
periodSeconds: 20
timeoutSeconds: 3
failureThreshold: 5
resources:
requests:
cpu: 50m
memory: 64Mi
limits:
cpu: 500m
memory: 256Mi

View file

@ -0,0 +1,16 @@
apiVersion: v1
kind: Service
metadata:
name: nxtgauge-rust-fitness-trainers
namespace: nxtgauge
labels:
app: nxtgauge-rust-fitness-trainers
spec:
type: ClusterIP
selector:
app: nxtgauge-rust-fitness-trainers
ports:
- name: http
port: 8092
targetPort: 8092
protocol: TCP

View file

@ -0,0 +1,52 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: nxtgauge-rust-gateway
namespace: nxtgauge
labels:
app: nxtgauge-rust-gateway
spec:
replicas: 1
selector:
matchLabels:
app: nxtgauge-rust-gateway
template:
metadata:
labels:
app: nxtgauge-rust-gateway
spec:
containers:
- name: gateway
image: ghcr.io/traceworks2023/nxtgauge-rust-gateway
imagePullPolicy: Always
ports:
- containerPort: 8000
name: http
envFrom:
- configMapRef:
name: nxtgauge-backend-rust-config
- secretRef:
name: nxtgauge-backend-rust-secrets
readinessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 10
periodSeconds: 10
timeoutSeconds: 3
failureThreshold: 3
livenessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 20
periodSeconds: 20
timeoutSeconds: 3
failureThreshold: 5
resources:
requests:
cpu: 50m
memory: 64Mi
limits:
cpu: 500m
memory: 256Mi

View file

@ -0,0 +1,16 @@
apiVersion: v1
kind: Service
metadata:
name: nxtgauge-rust-gateway
namespace: nxtgauge
labels:
app: nxtgauge-rust-gateway
spec:
type: ClusterIP
selector:
app: nxtgauge-rust-gateway
ports:
- name: http
port: 8000
targetPort: 8000
protocol: TCP

View file

@ -0,0 +1,52 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: nxtgauge-rust-graphic-designers
namespace: nxtgauge
labels:
app: nxtgauge-rust-graphic-designers
spec:
replicas: 1
selector:
matchLabels:
app: nxtgauge-rust-graphic-designers
template:
metadata:
labels:
app: nxtgauge-rust-graphic-designers
spec:
containers:
- name: graphic_designers
image: ghcr.io/traceworks2023/nxtgauge-rust-graphic-designers
imagePullPolicy: Always
ports:
- containerPort: 8090
name: http
envFrom:
- configMapRef:
name: nxtgauge-backend-rust-config
- secretRef:
name: nxtgauge-backend-rust-secrets
readinessProbe:
httpGet:
path: /health
port: 8090
initialDelaySeconds: 10
periodSeconds: 10
timeoutSeconds: 3
failureThreshold: 3
livenessProbe:
httpGet:
path: /health
port: 8090
initialDelaySeconds: 20
periodSeconds: 20
timeoutSeconds: 3
failureThreshold: 5
resources:
requests:
cpu: 50m
memory: 64Mi
limits:
cpu: 500m
memory: 256Mi

View file

@ -0,0 +1,16 @@
apiVersion: v1
kind: Service
metadata:
name: nxtgauge-rust-graphic-designers
namespace: nxtgauge
labels:
app: nxtgauge-rust-graphic-designers
spec:
type: ClusterIP
selector:
app: nxtgauge-rust-graphic-designers
ports:
- name: http
port: 8090
targetPort: 8090
protocol: TCP

View file

@ -0,0 +1,18 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: nxtgauge-backend-rust
namespace: nxtgauge
spec:
ingressClassName: traefik
rules:
- host: api.nxtgauge.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: nxtgauge-rust-gateway
port:
number: 8000

View file

@ -0,0 +1,52 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: nxtgauge-rust-job-seekers
namespace: nxtgauge
labels:
app: nxtgauge-rust-job-seekers
spec:
replicas: 1
selector:
matchLabels:
app: nxtgauge-rust-job-seekers
template:
metadata:
labels:
app: nxtgauge-rust-job-seekers
spec:
containers:
- name: job_seekers
image: ghcr.io/traceworks2023/nxtgauge-rust-job-seekers
imagePullPolicy: Always
ports:
- containerPort: 8082
name: http
envFrom:
- configMapRef:
name: nxtgauge-backend-rust-config
- secretRef:
name: nxtgauge-backend-rust-secrets
readinessProbe:
httpGet:
path: /health
port: 8082
initialDelaySeconds: 10
periodSeconds: 10
timeoutSeconds: 3
failureThreshold: 3
livenessProbe:
httpGet:
path: /health
port: 8082
initialDelaySeconds: 20
periodSeconds: 20
timeoutSeconds: 3
failureThreshold: 5
resources:
requests:
cpu: 50m
memory: 64Mi
limits:
cpu: 500m
memory: 256Mi

View file

@ -0,0 +1,16 @@
apiVersion: v1
kind: Service
metadata:
name: nxtgauge-rust-job-seekers
namespace: nxtgauge
labels:
app: nxtgauge-rust-job-seekers
spec:
type: ClusterIP
selector:
app: nxtgauge-rust-job-seekers
ports:
- name: http
port: 8082
targetPort: 8082
protocol: TCP

View file

@ -0,0 +1,42 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- namespace.yaml
- configmap.yaml
- secret.yaml
- ingress.yaml
- gateway-deployment.yaml
- gateway-service.yaml
- users-deployment.yaml
- users-service.yaml
- companies-deployment.yaml
- companies-service.yaml
- job-seekers-deployment.yaml
- job-seekers-service.yaml
- customers-deployment.yaml
- customers-service.yaml
- payments-deployment.yaml
- payments-service.yaml
- employees-deployment.yaml
- employees-service.yaml
- photographers-deployment.yaml
- photographers-service.yaml
- makeup-artists-deployment.yaml
- makeup-artists-service.yaml
- tutors-deployment.yaml
- tutors-service.yaml
- developers-deployment.yaml
- developers-service.yaml
- video-editors-deployment.yaml
- video-editors-service.yaml
- graphic-designers-deployment.yaml
- graphic-designers-service.yaml
- social-media-managers-deployment.yaml
- social-media-managers-service.yaml
- fitness-trainers-deployment.yaml
- fitness-trainers-service.yaml
- catering-services-deployment.yaml
- catering-services-service.yaml
- ugc-content-creators-deployment.yaml
- ugc-content-creators-service.yaml
- cron-deployment.yaml

View file

@ -0,0 +1,52 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: nxtgauge-rust-makeup-artists
namespace: nxtgauge
labels:
app: nxtgauge-rust-makeup-artists
spec:
replicas: 1
selector:
matchLabels:
app: nxtgauge-rust-makeup-artists
template:
metadata:
labels:
app: nxtgauge-rust-makeup-artists
spec:
containers:
- name: makeup_artists
image: ghcr.io/traceworks2023/nxtgauge-rust-makeup-artists
imagePullPolicy: Always
ports:
- containerPort: 8086
name: http
envFrom:
- configMapRef:
name: nxtgauge-backend-rust-config
- secretRef:
name: nxtgauge-backend-rust-secrets
readinessProbe:
httpGet:
path: /health
port: 8086
initialDelaySeconds: 10
periodSeconds: 10
timeoutSeconds: 3
failureThreshold: 3
livenessProbe:
httpGet:
path: /health
port: 8086
initialDelaySeconds: 20
periodSeconds: 20
timeoutSeconds: 3
failureThreshold: 5
resources:
requests:
cpu: 50m
memory: 64Mi
limits:
cpu: 500m
memory: 256Mi

View file

@ -0,0 +1,16 @@
apiVersion: v1
kind: Service
metadata:
name: nxtgauge-rust-makeup-artists
namespace: nxtgauge
labels:
app: nxtgauge-rust-makeup-artists
spec:
type: ClusterIP
selector:
app: nxtgauge-rust-makeup-artists
ports:
- name: http
port: 8086
targetPort: 8086
protocol: TCP

View file

@ -0,0 +1,4 @@
apiVersion: v1
kind: Namespace
metadata:
name: nxtgauge

View file

@ -0,0 +1,52 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: nxtgauge-rust-payments
namespace: nxtgauge
labels:
app: nxtgauge-rust-payments
spec:
replicas: 1
selector:
matchLabels:
app: nxtgauge-rust-payments
template:
metadata:
labels:
app: nxtgauge-rust-payments
spec:
containers:
- name: payments
image: ghcr.io/traceworks2023/nxtgauge-rust-payments
imagePullPolicy: Always
ports:
- containerPort: 8094
name: http
envFrom:
- configMapRef:
name: nxtgauge-backend-rust-config
- secretRef:
name: nxtgauge-backend-rust-secrets
readinessProbe:
httpGet:
path: /health
port: 8094
initialDelaySeconds: 10
periodSeconds: 10
timeoutSeconds: 3
failureThreshold: 3
livenessProbe:
httpGet:
path: /health
port: 8094
initialDelaySeconds: 20
periodSeconds: 20
timeoutSeconds: 3
failureThreshold: 5
resources:
requests:
cpu: 50m
memory: 64Mi
limits:
cpu: 500m
memory: 256Mi

View file

@ -0,0 +1,16 @@
apiVersion: v1
kind: Service
metadata:
name: nxtgauge-rust-payments
namespace: nxtgauge
labels:
app: nxtgauge-rust-payments
spec:
type: ClusterIP
selector:
app: nxtgauge-rust-payments
ports:
- name: http
port: 8094
targetPort: 8094
protocol: TCP

View file

@ -0,0 +1,52 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: nxtgauge-rust-photographers
namespace: nxtgauge
labels:
app: nxtgauge-rust-photographers
spec:
replicas: 1
selector:
matchLabels:
app: nxtgauge-rust-photographers
template:
metadata:
labels:
app: nxtgauge-rust-photographers
spec:
containers:
- name: photographers
image: ghcr.io/traceworks2023/nxtgauge-rust-photographers
imagePullPolicy: Always
ports:
- containerPort: 8085
name: http
envFrom:
- configMapRef:
name: nxtgauge-backend-rust-config
- secretRef:
name: nxtgauge-backend-rust-secrets
readinessProbe:
httpGet:
path: /health
port: 8085
initialDelaySeconds: 10
periodSeconds: 10
timeoutSeconds: 3
failureThreshold: 3
livenessProbe:
httpGet:
path: /health
port: 8085
initialDelaySeconds: 20
periodSeconds: 20
timeoutSeconds: 3
failureThreshold: 5
resources:
requests:
cpu: 50m
memory: 64Mi
limits:
cpu: 500m
memory: 256Mi

View file

@ -0,0 +1,16 @@
apiVersion: v1
kind: Service
metadata:
name: nxtgauge-rust-photographers
namespace: nxtgauge
labels:
app: nxtgauge-rust-photographers
spec:
type: ClusterIP
selector:
app: nxtgauge-rust-photographers
ports:
- name: http
port: 8085
targetPort: 8085
protocol: TCP

View file

@ -0,0 +1,22 @@
apiVersion: v1
kind: Secret
metadata:
name: nxtgauge-backend-rust-secrets
namespace: nxtgauge
type: Opaque
stringData:
DATABASE_URL: "postgresql://postgres:chandan2026%401@pg-postgresql.data.svc.cluster.local:5432/nxtgauge"
JWT_SECRET: "bPU0RQ/N7JW8CDCioe6AFBw/lBLTm++pGtta20pcsTX36p3OyheplgUyiD66OCuV"
REDIS_URL: "redis://redis-master.data.svc.cluster.local:6379"
SMTP_HOST: "mail.nxtgauge.com"
SMTP_PORT: "587"
SMTP_USER: "noreply@nxtgauge.com"
SMTP_PASS: "Nxtguage@1128"
SMTP_FROM_NAME: "NXTGAUGE"
SMTP_FROM_EMAIL: "noreply@nxtgauge.com"
SMTP_SECURE: "false"
SMTP_REQUIRE_TLS: "true"
B2_BUCKET_NAME: "nxtgauge"
B2_ENDPOINT: ""
B2_ACCESS_KEY_ID: ""
B2_SECRET_ACCESS_KEY: ""

View file

@ -0,0 +1,52 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: nxtgauge-rust-social-media-managers
namespace: nxtgauge
labels:
app: nxtgauge-rust-social-media-managers
spec:
replicas: 1
selector:
matchLabels:
app: nxtgauge-rust-social-media-managers
template:
metadata:
labels:
app: nxtgauge-rust-social-media-managers
spec:
containers:
- name: social_media_managers
image: ghcr.io/traceworks2023/nxtgauge-rust-social-media-managers
imagePullPolicy: Always
ports:
- containerPort: 8091
name: http
envFrom:
- configMapRef:
name: nxtgauge-backend-rust-config
- secretRef:
name: nxtgauge-backend-rust-secrets
readinessProbe:
httpGet:
path: /health
port: 8091
initialDelaySeconds: 10
periodSeconds: 10
timeoutSeconds: 3
failureThreshold: 3
livenessProbe:
httpGet:
path: /health
port: 8091
initialDelaySeconds: 20
periodSeconds: 20
timeoutSeconds: 3
failureThreshold: 5
resources:
requests:
cpu: 50m
memory: 64Mi
limits:
cpu: 500m
memory: 256Mi

View file

@ -0,0 +1,16 @@
apiVersion: v1
kind: Service
metadata:
name: nxtgauge-rust-social-media-managers
namespace: nxtgauge
labels:
app: nxtgauge-rust-social-media-managers
spec:
type: ClusterIP
selector:
app: nxtgauge-rust-social-media-managers
ports:
- name: http
port: 8091
targetPort: 8091
protocol: TCP

View file

@ -0,0 +1,52 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: nxtgauge-rust-tutors
namespace: nxtgauge
labels:
app: nxtgauge-rust-tutors
spec:
replicas: 1
selector:
matchLabels:
app: nxtgauge-rust-tutors
template:
metadata:
labels:
app: nxtgauge-rust-tutors
spec:
containers:
- name: tutors
image: ghcr.io/traceworks2023/nxtgauge-rust-tutors
imagePullPolicy: Always
ports:
- containerPort: 8087
name: http
envFrom:
- configMapRef:
name: nxtgauge-backend-rust-config
- secretRef:
name: nxtgauge-backend-rust-secrets
readinessProbe:
httpGet:
path: /health
port: 8087
initialDelaySeconds: 10
periodSeconds: 10
timeoutSeconds: 3
failureThreshold: 3
livenessProbe:
httpGet:
path: /health
port: 8087
initialDelaySeconds: 20
periodSeconds: 20
timeoutSeconds: 3
failureThreshold: 5
resources:
requests:
cpu: 50m
memory: 64Mi
limits:
cpu: 500m
memory: 256Mi

View file

@ -0,0 +1,16 @@
apiVersion: v1
kind: Service
metadata:
name: nxtgauge-rust-tutors
namespace: nxtgauge
labels:
app: nxtgauge-rust-tutors
spec:
type: ClusterIP
selector:
app: nxtgauge-rust-tutors
ports:
- name: http
port: 8087
targetPort: 8087
protocol: TCP

View file

@ -0,0 +1,52 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: nxtgauge-rust-ugc-content-creators
namespace: nxtgauge
labels:
app: nxtgauge-rust-ugc-content-creators
spec:
replicas: 1
selector:
matchLabels:
app: nxtgauge-rust-ugc-content-creators
template:
metadata:
labels:
app: nxtgauge-rust-ugc-content-creators
spec:
containers:
- name: ugc_content_creators
image: ghcr.io/traceworks2023/nxtgauge-rust-ugc-content-creators
imagePullPolicy: Always
ports:
- containerPort: 8095
name: http
envFrom:
- configMapRef:
name: nxtgauge-backend-rust-config
- secretRef:
name: nxtgauge-backend-rust-secrets
readinessProbe:
httpGet:
path: /health
port: 8095
initialDelaySeconds: 10
periodSeconds: 10
timeoutSeconds: 3
failureThreshold: 3
livenessProbe:
httpGet:
path: /health
port: 8095
initialDelaySeconds: 20
periodSeconds: 20
timeoutSeconds: 3
failureThreshold: 5
resources:
requests:
cpu: 50m
memory: 64Mi
limits:
cpu: 500m
memory: 256Mi

View file

@ -0,0 +1,16 @@
apiVersion: v1
kind: Service
metadata:
name: nxtgauge-rust-ugc-content-creators
namespace: nxtgauge
labels:
app: nxtgauge-rust-ugc-content-creators
spec:
type: ClusterIP
selector:
app: nxtgauge-rust-ugc-content-creators
ports:
- name: http
port: 8095
targetPort: 8095
protocol: TCP

View file

@ -0,0 +1,52 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: nxtgauge-rust-users
namespace: nxtgauge
labels:
app: nxtgauge-rust-users
spec:
replicas: 1
selector:
matchLabels:
app: nxtgauge-rust-users
template:
metadata:
labels:
app: nxtgauge-rust-users
spec:
containers:
- name: users
image: ghcr.io/traceworks2023/nxtgauge-rust-users
imagePullPolicy: Always
ports:
- containerPort: 8080
name: http
envFrom:
- configMapRef:
name: nxtgauge-backend-rust-config
- secretRef:
name: nxtgauge-backend-rust-secrets
readinessProbe:
httpGet:
path: /health
port: 8080
initialDelaySeconds: 10
periodSeconds: 10
timeoutSeconds: 3
failureThreshold: 3
livenessProbe:
httpGet:
path: /health
port: 8080
initialDelaySeconds: 20
periodSeconds: 20
timeoutSeconds: 3
failureThreshold: 5
resources:
requests:
cpu: 50m
memory: 64Mi
limits:
cpu: 500m
memory: 256Mi

View file

@ -0,0 +1,16 @@
apiVersion: v1
kind: Service
metadata:
name: nxtgauge-rust-users
namespace: nxtgauge
labels:
app: nxtgauge-rust-users
spec:
type: ClusterIP
selector:
app: nxtgauge-rust-users
ports:
- name: http
port: 8080
targetPort: 8080
protocol: TCP

View file

@ -0,0 +1,52 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: nxtgauge-rust-video-editors
namespace: nxtgauge
labels:
app: nxtgauge-rust-video-editors
spec:
replicas: 1
selector:
matchLabels:
app: nxtgauge-rust-video-editors
template:
metadata:
labels:
app: nxtgauge-rust-video-editors
spec:
containers:
- name: video_editors
image: ghcr.io/traceworks2023/nxtgauge-rust-video-editors
imagePullPolicy: Always
ports:
- containerPort: 8089
name: http
envFrom:
- configMapRef:
name: nxtgauge-backend-rust-config
- secretRef:
name: nxtgauge-backend-rust-secrets
readinessProbe:
httpGet:
path: /health
port: 8089
initialDelaySeconds: 10
periodSeconds: 10
timeoutSeconds: 3
failureThreshold: 3
livenessProbe:
httpGet:
path: /health
port: 8089
initialDelaySeconds: 20
periodSeconds: 20
timeoutSeconds: 3
failureThreshold: 5
resources:
requests:
cpu: 50m
memory: 64Mi
limits:
cpu: 500m
memory: 256Mi

View file

@ -0,0 +1,16 @@
apiVersion: v1
kind: Service
metadata:
name: nxtgauge-rust-video-editors
namespace: nxtgauge
labels:
app: nxtgauge-rust-video-editors
spec:
type: ClusterIP
selector:
app: nxtgauge-rust-video-editors
ports:
- name: http
port: 8089
targetPort: 8089
protocol: TCP

View file

@ -0,0 +1,43 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../../base
patchesStrategicMerge:
- replicas-patch.yaml
images:
- name: ghcr.io/traceworks2023/nxtgauge-rust-gateway
newTag: high-performance-latest
- name: ghcr.io/traceworks2023/nxtgauge-rust-users
newTag: high-performance-latest
- name: ghcr.io/traceworks2023/nxtgauge-rust-companies
newTag: high-performance-latest
- name: ghcr.io/traceworks2023/nxtgauge-rust-job-seekers
newTag: high-performance-latest
- name: ghcr.io/traceworks2023/nxtgauge-rust-customers
newTag: high-performance-latest
- name: ghcr.io/traceworks2023/nxtgauge-rust-payments
newTag: high-performance-latest
- name: ghcr.io/traceworks2023/nxtgauge-rust-employees
newTag: high-performance-latest
- name: ghcr.io/traceworks2023/nxtgauge-rust-photographers
newTag: high-performance-latest
- name: ghcr.io/traceworks2023/nxtgauge-rust-makeup-artists
newTag: high-performance-latest
- name: ghcr.io/traceworks2023/nxtgauge-rust-tutors
newTag: high-performance-latest
- name: ghcr.io/traceworks2023/nxtgauge-rust-developers
newTag: high-performance-latest
- name: ghcr.io/traceworks2023/nxtgauge-rust-video-editors
newTag: high-performance-latest
- name: ghcr.io/traceworks2023/nxtgauge-rust-graphic-designers
newTag: high-performance-latest
- name: ghcr.io/traceworks2023/nxtgauge-rust-social-media-managers
newTag: high-performance-latest
- name: ghcr.io/traceworks2023/nxtgauge-rust-fitness-trainers
newTag: high-performance-latest
- name: ghcr.io/traceworks2023/nxtgauge-rust-catering-services
newTag: high-performance-latest
- name: ghcr.io/traceworks2023/nxtgauge-rust-ugc-content-creators
newTag: high-performance-latest
- name: ghcr.io/traceworks2023/nxtgauge-rust-cron
newTag: high-performance-latest

View file

@ -0,0 +1,7 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: nxtgauge-rust-gateway
namespace: nxtgauge
spec:
replicas: 2

View file

@ -0,0 +1,9 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: nxtgauge-frontend-solid-config
namespace: nxtgauge
data:
NODE_ENV: "production"
PORT: "3000"
GATEWAY_URL: "http://nxtgauge-rust-gateway:8000"

View file

@ -0,0 +1,52 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: nxtgauge-frontend-solid
namespace: nxtgauge
labels:
app: nxtgauge-frontend-solid
spec:
replicas: 1
selector:
matchLabels:
app: nxtgauge-frontend-solid
template:
metadata:
labels:
app: nxtgauge-frontend-solid
spec:
containers:
- name: frontend-solid
image: ghcr.io/traceworks2023/nxtgauge-frontend-solid
imagePullPolicy: Always
ports:
- containerPort: 3000
name: http
envFrom:
- configMapRef:
name: nxtgauge-frontend-solid-config
- secretRef:
name: nxtgauge-frontend-solid-secrets
readinessProbe:
httpGet:
path: /
port: 3000
initialDelaySeconds: 10
periodSeconds: 10
timeoutSeconds: 3
failureThreshold: 3
livenessProbe:
httpGet:
path: /
port: 3000
initialDelaySeconds: 20
periodSeconds: 20
timeoutSeconds: 3
failureThreshold: 3
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 500m
memory: 512Mi

View file

@ -0,0 +1,28 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: nxtgauge-frontend-solid
namespace: nxtgauge
spec:
ingressClassName: traefik
rules:
- host: nxtgauge.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: nxtgauge-frontend-solid
port:
number: 80
- host: www.nxtgauge.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: nxtgauge-frontend-solid
port:
number: 80

View file

@ -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

View file

@ -0,0 +1,4 @@
apiVersion: v1
kind: Namespace
metadata:
name: nxtgauge

View file

@ -0,0 +1,12 @@
apiVersion: v1
kind: Secret
metadata:
name: nxtgauge-frontend-solid-secrets
namespace: nxtgauge
type: Opaque
stringData:
SMTP_HOST: "mail.nxtgauge.com"
SMTP_PORT: "587"
SMTP_USER: "noreply@nxtgauge.com"
SMTP_PASS: "Nxtguage@1128"
SMTP_FROM: "noreply@nxtgauge.com"

View file

@ -0,0 +1,16 @@
apiVersion: v1
kind: Service
metadata:
name: nxtgauge-frontend-solid
namespace: nxtgauge
labels:
app: nxtgauge-frontend-solid
spec:
type: ClusterIP
selector:
app: nxtgauge-frontend-solid
ports:
- name: http
port: 80
targetPort: 3000
protocol: TCP

View file

@ -0,0 +1,9 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../../base
patchesStrategicMerge:
- replicas-patch.yaml
images:
- name: ghcr.io/traceworks2023/nxtgauge-frontend-solid
newTag: high-performance-latest

View file

@ -0,0 +1,7 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: nxtgauge-frontend-solid
namespace: nxtgauge
spec:
replicas: 1

View file

@ -0,0 +1,25 @@
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: nxtgauge-admin-solid
namespace: argocd
annotations:
argocd-image-updater.argoproj.io/image-list: admin=ghcr.io/traceworks2023/nxtgauge-admin-solid:high-performance-latest
argocd-image-updater.argoproj.io/admin.update-strategy: digest
argocd-image-updater.argoproj.io/admin.allow-tags: regexp:^high-performance-latest$
argocd-image-updater.argoproj.io/write-back-method: argocd
spec:
project: default
source:
repoURL: https://github.com/Traceworks2023/nxtgauge-gitops.git
targetRevision: main
path: apps/nxtgauge-admin-solid/overlays/prod
destination:
server: https://kubernetes.default.svc
namespace: nxtgauge
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true

View file

@ -0,0 +1,77 @@
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: nxtgauge-backend-rust
namespace: argocd
annotations:
argocd-image-updater.argoproj.io/image-list: >-
gateway=ghcr.io/traceworks2023/nxtgauge-rust-gateway:high-performance-latest,
users=ghcr.io/traceworks2023/nxtgauge-rust-users:high-performance-latest,
companies=ghcr.io/traceworks2023/nxtgauge-rust-companies:high-performance-latest,
job-seekers=ghcr.io/traceworks2023/nxtgauge-rust-job_seekers:high-performance-latest,
customers=ghcr.io/traceworks2023/nxtgauge-rust-customers:high-performance-latest,
payments=ghcr.io/traceworks2023/nxtgauge-rust-payments:high-performance-latest,
employees=ghcr.io/traceworks2023/nxtgauge-rust-employees:high-performance-latest,
photographers=ghcr.io/traceworks2023/nxtgauge-rust-photographers:high-performance-latest,
makeup-artists=ghcr.io/traceworks2023/nxtgauge-rust-makeup_artists:high-performance-latest,
tutors=ghcr.io/traceworks2023/nxtgauge-rust-tutors:high-performance-latest,
developers=ghcr.io/traceworks2023/nxtgauge-rust-developers:high-performance-latest,
video-editors=ghcr.io/traceworks2023/nxtgauge-rust-video_editors:high-performance-latest,
graphic-designers=ghcr.io/traceworks2023/nxtgauge-rust-graphic_designers:high-performance-latest,
social-media-managers=ghcr.io/traceworks2023/nxtgauge-rust-social_media_managers:high-performance-latest,
fitness-trainers=ghcr.io/traceworks2023/nxtgauge-rust-fitness_trainers:high-performance-latest,
catering-services=ghcr.io/traceworks2023/nxtgauge-rust-catering_services:high-performance-latest,
ugc-content-creators=ghcr.io/traceworks2023/nxtgauge-rust-ugc_content_creators:high-performance-latest,
cron=ghcr.io/traceworks2023/nxtgauge-rust-cron:high-performance-latest
argocd-image-updater.argoproj.io/gateway.update-strategy: digest
argocd-image-updater.argoproj.io/gateway.allow-tags: regexp:^high-performance-latest$
argocd-image-updater.argoproj.io/users.update-strategy: digest
argocd-image-updater.argoproj.io/users.allow-tags: regexp:^high-performance-latest$
argocd-image-updater.argoproj.io/companies.update-strategy: digest
argocd-image-updater.argoproj.io/companies.allow-tags: regexp:^high-performance-latest$
argocd-image-updater.argoproj.io/job-seekers.update-strategy: digest
argocd-image-updater.argoproj.io/job-seekers.allow-tags: regexp:^high-performance-latest$
argocd-image-updater.argoproj.io/customers.update-strategy: digest
argocd-image-updater.argoproj.io/customers.allow-tags: regexp:^high-performance-latest$
argocd-image-updater.argoproj.io/payments.update-strategy: digest
argocd-image-updater.argoproj.io/payments.allow-tags: regexp:^high-performance-latest$
argocd-image-updater.argoproj.io/employees.update-strategy: digest
argocd-image-updater.argoproj.io/employees.allow-tags: regexp:^high-performance-latest$
argocd-image-updater.argoproj.io/photographers.update-strategy: digest
argocd-image-updater.argoproj.io/photographers.allow-tags: regexp:^high-performance-latest$
argocd-image-updater.argoproj.io/makeup-artists.update-strategy: digest
argocd-image-updater.argoproj.io/makeup-artists.allow-tags: regexp:^high-performance-latest$
argocd-image-updater.argoproj.io/tutors.update-strategy: digest
argocd-image-updater.argoproj.io/tutors.allow-tags: regexp:^high-performance-latest$
argocd-image-updater.argoproj.io/developers.update-strategy: digest
argocd-image-updater.argoproj.io/developers.allow-tags: regexp:^high-performance-latest$
argocd-image-updater.argoproj.io/video-editors.update-strategy: digest
argocd-image-updater.argoproj.io/video-editors.allow-tags: regexp:^high-performance-latest$
argocd-image-updater.argoproj.io/graphic-designers.update-strategy: digest
argocd-image-updater.argoproj.io/graphic-designers.allow-tags: regexp:^high-performance-latest$
argocd-image-updater.argoproj.io/social-media-managers.update-strategy: digest
argocd-image-updater.argoproj.io/social-media-managers.allow-tags: regexp:^high-performance-latest$
argocd-image-updater.argoproj.io/fitness-trainers.update-strategy: digest
argocd-image-updater.argoproj.io/fitness-trainers.allow-tags: regexp:^high-performance-latest$
argocd-image-updater.argoproj.io/catering-services.update-strategy: digest
argocd-image-updater.argoproj.io/catering-services.allow-tags: regexp:^high-performance-latest$
argocd-image-updater.argoproj.io/ugc-content-creators.update-strategy: digest
argocd-image-updater.argoproj.io/ugc-content-creators.allow-tags: regexp:^high-performance-latest$
argocd-image-updater.argoproj.io/cron.update-strategy: digest
argocd-image-updater.argoproj.io/cron.allow-tags: regexp:^high-performance-latest$
argocd-image-updater.argoproj.io/write-back-method: argocd
spec:
project: default
source:
repoURL: https://github.com/Traceworks2023/nxtgauge-gitops.git
targetRevision: main
path: apps/nxtgauge-backend-rust/overlays/prod
destination:
server: https://kubernetes.default.svc
namespace: nxtgauge
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true

View file

@ -0,0 +1,25 @@
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: nxtgauge-frontend-solid
namespace: argocd
annotations:
argocd-image-updater.argoproj.io/image-list: frontend=ghcr.io/traceworks2023/nxtgauge-frontend-solid:high-performance-latest
argocd-image-updater.argoproj.io/frontend.update-strategy: digest
argocd-image-updater.argoproj.io/frontend.allow-tags: regexp:^high-performance-latest$
argocd-image-updater.argoproj.io/write-back-method: argocd
spec:
project: default
source:
repoURL: https://github.com/Traceworks2023/nxtgauge-gitops.git
targetRevision: main
path: apps/nxtgauge-frontend-solid/overlays/prod
destination:
server: https://kubernetes.default.svc
namespace: nxtgauge
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true