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