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