Files
mcp-server/helm/templates/deployment.yaml

78 lines
2.7 KiB
YAML

apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Release.Name }}
labels:
app: mcp-server
app.kubernetes.io/name: mcp-server
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: argocd
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
app: mcp-server
template:
metadata:
labels:
app: mcp-server
app.kubernetes.io/name: mcp-server
spec:
securityContext:
{{- toYaml .Values.securityContext | nindent 8 }}
nodeSelector:
{{- toYaml .Values.nodeSelector | nindent 8 }}
tolerations:
{{- toYaml .Values.tolerations | nindent 8 }}
containers:
- name: mcp-server
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
securityContext:
{{- toYaml .Values.containerSecurityContext | nindent 12 }}
env:
- name: HOME
value: /tmp
- name: PIP_USER
value: "1"
- name: PYTHONUSERBASE
value: /tmp/.local
command: ["sh", "-c"]
args:
- |
export PATH=/tmp/.local/bin:$PATH
pip install --no-cache-dir --user fastapi uvicorn httpx pydantic
cat > /tmp/main.py << 'PYEOF'
from fastapi import FastAPI
app = FastAPI(title="Cryptophys MCP Server")
@app.get("/healthz")
def healthz():
return {"status": "ok"}
@app.get("/")
def root():
return {"message": "Cryptophys MCP Server", "version": "1.0.0", "autonomous": True, "gitops": True, "argocd": True}
@app.post("/mcp")
async def mcp_endpoint(request: dict = {}):
return {"jsonrpc": "2.0", "result": {"tools": ["read_ssot", "write_ledger", "query_k8s"], "resources": ["ssot://", "ledger://"]}, "id": request.get("id", 1)}
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=8088)
PYEOF
python /tmp/main.py
ports:
- containerPort: {{ .Values.service.targetPort }}
resources:
{{- toYaml .Values.resources | nindent 12 }}
readinessProbe:
httpGet:
path: /healthz
port: {{ .Values.service.targetPort }}
initialDelaySeconds: 90
periodSeconds: 10
livenessProbe:
httpGet:
path: /healthz
port: {{ .Values.service.targetPort }}
initialDelaySeconds: 120
periodSeconds: 30