File size: 2,187 Bytes
832348e
 
 
 
 
 
10d71ba
832348e
 
 
 
 
 
 
 
 
10d71ba
832348e
 
 
10d71ba
832348e
 
10d71ba
832348e
 
 
 
 
 
 
 
10d71ba
 
832348e
 
 
 
 
 
 
 
 
 
 
 
 
10d71ba
 
832348e
 
 
 
 
 
10d71ba
 
 
 
 
 
 
 
 
 
 
 
 
 
832348e
 
 
 
 
10d71ba
 
832348e
 
 
 
 
 
 
10d71ba
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
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