diff --git a/deployment.yaml b/deployment.yaml new file mode 100644 index 0000000..ddfa391 --- /dev/null +++ b/deployment.yaml @@ -0,0 +1,126 @@ +# 1. api Deployment — Flask backend +apiVersion: apps/v1 +kind: Deployment +metadata: + name: api + namespace: taskapp + labels: + app: api +spec: + replicas: 2 + selector: + matchLabels: + app: api + template: + metadata: + labels: + app: api + spec: + containers: + - name: api + image: taskapp-api:v1 + imagePullPolicy: IfNotPresent + ports: + - containerPort: 5000 + name: http + env: + - name: DB_HOST + value: "db" + - name: DB_PORT + value: "5432" + - name: DB_NAME + valueFrom: + secretKeyRef: + name: db-credentials + key: POSTGRES_DB + - name: DB_USER + valueFrom: + secretKeyRef: + name: db-credentials + key: POSTGRES_USER + - name: DB_PASSWORD + valueFrom: + secretKeyRef: + name: db-credentials + key: POSTGRES_PASSWORD + resources: + requests: + cpu: 50m + memory: 64Mi + limits: + cpu: 250m + memory: 256Mi + readinessProbe: + httpGet: + path: /api/health + port: 5000 + initialDelaySeconds: 5 + periodSeconds: 5 + timeoutSeconds: 3 + failureThreshold: 6 + livenessProbe: + httpGet: + path: /api/health + port: 5000 + initialDelaySeconds: 30 + periodSeconds: 15 + timeoutSeconds: 3 + failureThreshold: 3 + +--- +# 2. web Deployment — Nginx frontend +apiVersion: apps/v1 +kind: Deployment +metadata: + name: web + namespace: taskapp + labels: + app: web +spec: + replicas: 2 + selector: + matchLabels: + app: web + template: + metadata: + labels: + app: web + spec: + containers: + - name: web + image: taskapp-web:v1 + imagePullPolicy: IfNotPresent + ports: + - containerPort: 80 + name: http + volumeMounts: + - name: nginx-config + mountPath: /etc/nginx/nginx.conf + subPath: nginx.conf + readOnly: true + resources: + requests: + cpu: 25m + memory: 32Mi + limits: + cpu: 100m + memory: 128Mi + readinessProbe: + httpGet: + path: / + port: 80 + initialDelaySeconds: 1 + periodSeconds: 5 + livenessProbe: + httpGet: + path: / + port: 80 + initialDelaySeconds: 5 + periodSeconds: 15 + volumes: + - name: nginx-config + configMap: + name: nginx-config + items: + - key: nginx.conf + path: nginx.conf