zkt26/z2/deployment.yaml

159 lines
4.0 KiB
YAML

# =============================================
# Deployment — Node.js REST API
# Stateless application layer that handles all
# CRUD operations for tasks. Reads environment
# variables for DB and Redis connection info.
# =============================================
apiVersion: apps/v1
kind: Deployment
metadata:
name: taskmanager-api
namespace: taskmanager
labels:
app: taskmanager-api
spec:
replicas: 2
selector:
matchLabels:
app: taskmanager-api
template:
metadata:
labels:
app: taskmanager-api
spec:
containers:
- name: api
image: taskmanager-api:latest
# Use local image — do not pull from registry
imagePullPolicy: Never
ports:
- containerPort: 3000
env:
- name: PORT
value: "3000"
- name: POSTGRES_HOST
value: postgres
- name: POSTGRES_PORT
value: "5432"
- name: POSTGRES_DB
value: taskmanager
- name: POSTGRES_USER
valueFrom:
secretKeyRef:
name: postgres-secret
key: username
- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
name: postgres-secret
key: password
- name: REDIS_HOST
value: redis
- name: REDIS_PORT
value: "6379"
readinessProbe:
httpGet:
path: /api/health
port: 3000
initialDelaySeconds: 15
periodSeconds: 10
livenessProbe:
httpGet:
path: /api/health
port: 3000
initialDelaySeconds: 30
periodSeconds: 15
resources:
requests:
memory: "128Mi"
cpu: "100m"
limits:
memory: "512Mi"
cpu: "500m"
---
# =============================================
# Deployment — Nginx Frontend
# Serves the static HTML/CSS/JS task manager
# UI and reverse-proxies /api/ calls to the
# API service inside the cluster.
# =============================================
apiVersion: apps/v1
kind: Deployment
metadata:
name: taskmanager-frontend
namespace: taskmanager
labels:
app: taskmanager-frontend
spec:
replicas: 1
selector:
matchLabels:
app: taskmanager-frontend
template:
metadata:
labels:
app: taskmanager-frontend
spec:
containers:
- name: frontend
image: taskmanager-frontend:latest
imagePullPolicy: Never
ports:
- containerPort: 80
readinessProbe:
httpGet:
path: /
port: 80
initialDelaySeconds: 5
periodSeconds: 10
resources:
requests:
memory: "64Mi"
cpu: "50m"
limits:
memory: "128Mi"
cpu: "200m"
---
# =============================================
# Deployment — Adminer
# Lightweight web interface for browsing the
# PostgreSQL database directly in a browser.
# =============================================
apiVersion: apps/v1
kind: Deployment
metadata:
name: taskmanager-adminer
namespace: taskmanager
labels:
app: taskmanager-adminer
spec:
replicas: 1
selector:
matchLabels:
app: taskmanager-adminer
template:
metadata:
labels:
app: taskmanager-adminer
spec:
containers:
- name: adminer
image: adminer:latest
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080
env:
- name: ADMINER_DEFAULT_SERVER
value: postgres
- name: ADMINER_DESIGN
value: dracula
resources:
requests:
memory: "64Mi"
cpu: "50m"
limits:
memory: "128Mi"
cpu: "200m"