rwadurian/backend/mpc-system/k8s/server-party-api-deployment...

106 lines
2.6 KiB
YAML

apiVersion: v1
kind: ServiceAccount
metadata:
name: mpc-server-party-api
namespace: mpc-system
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: mpc-server-party-api
namespace: mpc-system
labels:
app: mpc-server-party-api
component: api
spec:
replicas: 2 # Delegate parties for generating user shares
selector:
matchLabels:
app: mpc-server-party-api
template:
metadata:
labels:
app: mpc-server-party-api
component: api
party-role: delegate # Delegate party generates and returns shares to caller
spec:
serviceAccountName: mpc-server-party-api
containers:
- name: server-party-api
image: mpc-system/server-party-api:latest
imagePullPolicy: IfNotPresent
ports:
- name: grpc
containerPort: 50051
protocol: TCP
- name: http
containerPort: 8080
protocol: TCP
env:
- name: MPC_SERVER_GRPC_PORT
value: "50051"
- name: MPC_SERVER_HTTP_PORT
value: "8080"
- name: MPC_SERVER_ENVIRONMENT
valueFrom:
configMapKeyRef:
name: mpc-config
key: environment
- name: SESSION_COORDINATOR_ADDR
value: "mpc-session-coordinator:50051"
- name: MESSAGE_ROUTER_ADDR
value: "mpc-message-router:50051"
- name: MPC_CRYPTO_MASTER_KEY
valueFrom:
secretKeyRef:
name: mpc-secrets
key: crypto_master_key
- name: PARTY_ID
valueFrom:
fieldRef:
fieldPath: metadata.name # Use pod name as unique party ID
resources:
requests:
memory: "256Mi"
cpu: "250m"
limits:
memory: "512Mi"
cpu: "500m"
livenessProbe:
httpGet:
path: /health
port: 8080
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 3
readinessProbe:
httpGet:
path: /health
port: 8080
initialDelaySeconds: 10
periodSeconds: 5
timeoutSeconds: 3
failureThreshold: 2
---
apiVersion: v1
kind: Service
metadata:
name: mpc-server-party-api
namespace: mpc-system
labels:
app: mpc-server-party-api
spec:
selector:
app: mpc-server-party-api
clusterIP: None # Headless service for service discovery
ports:
- name: grpc
port: 50051
targetPort: 50051
protocol: TCP
- name: http
port: 8080
targetPort: 8080
protocol: TCP