hadith-api/k8s/deployment.yaml

142 lines
3.6 KiB
YAML

apiVersion: v1
kind: Namespace
metadata:
name: api
---
apiVersion: v1
kind: Secret
metadata:
name: hadith-api-secrets
namespace: api
type: Opaque
stringData:
PG_DBNAME: "REPLACE_ME"
PG_USER: "REPLACE_ME"
PG_PASSWORD: "REPLACE_ME"
NEO4J_PASSWORD: "NEO4J-PASS"
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: hadith-api
namespace: api
labels:
app: hadith-api
spec:
replicas: 2
selector:
matchLabels:
app: hadith-api
template:
metadata:
labels:
app: hadith-api
spec:
containers:
- name: hadith-api
image: registry.betelgeusebytes.io/hadith-api:latest # adjust to your registry
ports:
- containerPort: 8000
env:
- name: HADITH_PG_HOST
value: "pg.betelgeusebytes.io"
- name: HADITH_PG_PORT
value: "5432"
- name: HADITH_PG_DBNAME
valueFrom:
secretKeyRef:
name: hadith-api-secrets
key: PG_DBNAME
- name: HADITH_PG_USER
valueFrom:
secretKeyRef:
name: hadith-api-secrets
key: PG_USER
- name: HADITH_PG_PASSWORD
valueFrom:
secretKeyRef:
name: hadith-api-secrets
key: PG_PASSWORD
- name: HADITH_PG_SSLMODE
value: "require"
- name: HADITH_NEO4J_URI
value: "neo4j+ssc://neo4j.betelgeusebytes.io:7687"
- name: HADITH_NEO4J_USER
value: "neo4j"
- name: HADITH_NEO4J_PASSWORD
valueFrom:
secretKeyRef:
name: hadith-api-secrets
key: NEO4J_PASSWORD
- name: HADITH_QDRANT_HOST
value: "qdrant.vector.svc.cluster.local"
- name: HADITH_QDRANT_PORT
value: "6333"
- name: HADITH_QDRANT_COLLECTION
value: "hadiths"
- name: HADITH_ES_HOST
value: "http://elasticsearch.elastic.svc.cluster.local:9200"
- name: HADITH_ES_INDEX
value: "hadiths"
- name: HADITH_TEI_URL
value: "http://tei.ml.svc.cluster.local:80"
resources:
requests:
cpu: "250m"
memory: "256Mi"
limits:
cpu: "1000m"
memory: "512Mi"
livenessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 10
periodSeconds: 30
readinessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 5
periodSeconds: 10
---
apiVersion: v1
kind: Service
metadata:
name: hadith-api
namespace: api
spec:
selector:
app: hadith-api
ports:
- port: 80
targetPort: 8000
protocol: TCP
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: hadith-api-ingress
namespace: api
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
nginx.ingress.kubernetes.io/proxy-body-size: "10m"
nginx.ingress.kubernetes.io/enable-cors: "true"
spec:
ingressClassName: nginx
tls:
- hosts:
- api.betelgeusebytes.io
secretName: hadith-api-tls
rules:
- host: api.betelgeusebytes.io
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: hadith-api
port:
number: 80