| # ============================================================================= | |
| # MLflow Tracking Server Deployment | |
| # ============================================================================= | |
| apiVersion: apps/v1 | |
| kind: Deployment | |
| metadata: | |
| name: mlflow | |
| namespace: ml-pipeline | |
| labels: | |
| app: mlflow | |
| spec: | |
| replicas: 1 | |
| selector: | |
| matchLabels: | |
| app: mlflow | |
| template: | |
| metadata: | |
| labels: | |
| app: mlflow | |
| spec: | |
| serviceAccountName: mlflow | |
| securityContext: | |
| runAsNonRoot: true | |
| runAsUser: 1000 | |
| containers: | |
| - name: mlflow | |
| image: "ghcr.io/mlflow/mlflow:v2.12.1" | |
| ports: | |
| - containerPort: 5000 | |
| env: | |
| - name: MLFLOW_S3_ENDPOINT_URL | |
| value: "https://s3.us-east-1.amazonaws.com" | |
| - name: AWS_DEFAULT_REGION | |
| value: "us-east-1" | |
| - name: MLFLOW_TRACKING_URI | |
| value: "postgresql://$(DB_USER):$(DB_PASSWORD)@$(DB_HOST):5432/mlflow" | |
| envFrom: | |
| - secretRef: | |
| name: mlflow-db-credentials | |
| resources: | |
| requests: | |
| cpu: 500m | |
| memory: 1Gi | |
| limits: | |
| cpu: "2" | |
| memory: 4Gi | |
| livenessProbe: | |
| httpGet: | |
| path: /health | |
| port: 5000 | |
| initialDelaySeconds: 30 | |
| periodSeconds: 30 | |
| readinessProbe: | |
| httpGet: | |
| path: /health | |
| port: 5000 | |
| initialDelaySeconds: 10 | |
| periodSeconds: 10 | |
| volumeMounts: | |
| - name: mlflow-artifacts | |
| mountPath: /mlflow/artifacts | |
| volumes: | |
| - name: mlflow-artifacts | |
| emptyDir: {} | |
| apiVersion: v1 | |
| kind: Service | |
| metadata: | |
| name: mlflow | |
| namespace: ml-pipeline | |
| spec: | |
| selector: | |
| app: mlflow | |
| ports: | |
| - port: 5000 | |
| targetPort: 5000 | |
| apiVersion: v1 | |
| kind: ServiceAccount | |
| metadata: | |
| name: mlflow | |
| namespace: ml-pipeline | |