FREDML / deploy /kubernetes /deployment.yaml
Edwin Salguero
Enterprise: Clean up directory structure and add proper CI/CD, monitoring, and deployment configurations
10d71ba
apiVersion: apps/v1
kind: Deployment
metadata:
name: fred-ml
labels:
app: fred-ml
version: v1.0.0
spec:
replicas: 3
selector:
matchLabels:
app: fred-ml
template:
metadata:
labels:
app: fred-ml
version: v1.0.0
spec:
containers:
- name: fred-ml
image: ghcr.io/eaname/fredml:latest
ports:
- containerPort: 8000
name: http
env:
- name: FRED_API_KEY
valueFrom:
secretKeyRef:
name: fred-ml-secrets
key: fred-api-key
- name: ENVIRONMENT
value: "production"
- name: LOG_LEVEL
value: "INFO"
resources:
requests:
memory: "256Mi"
cpu: "250m"
limits:
memory: "512Mi"
cpu: "500m"
livenessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 3
readinessProbe:
httpGet:
path: /ready
port: 8000
initialDelaySeconds: 5
periodSeconds: 5
timeoutSeconds: 3
failureThreshold: 3
volumeMounts:
- name: data-volume
mountPath: /app/data
- name: logs-volume
mountPath: /app/logs
volumes:
- name: data-volume
persistentVolumeClaim:
claimName: fred-ml-data-pvc
- name: logs-volume
persistentVolumeClaim:
claimName: fred-ml-logs-pvc
---
apiVersion: v1
kind: Service
metadata:
name: fred-ml-service
labels:
app: fred-ml
spec:
selector:
app: fred-ml
ports:
- protocol: TCP
port: 80
targetPort: 8000
name: http
type: LoadBalancer
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: fred-ml-data-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: fred-ml-logs-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi