Files
haproxy-mcp/k8s/deployment.yaml
kappa e40d69a1b1 feat: Add SSH remote execution for HAProxy on remote host
MCP server can now manage HAProxy running on a remote host via SSH.
When SSH_HOST env var is set, all file I/O and subprocess commands
(podman, acme.sh, openssl) are routed through SSH instead of local exec.

- Add ssh_ops.py module with remote_exec, run_command, file I/O helpers
- Modify file_ops.py to support remote reads/writes via SSH
- Update all tools (domains, certificates, health, configuration) for SSH
- Fix domains.py: replace direct fcntl usage with file_lock context manager
- Add openssh-client to Docker image for SSH connectivity
- Update k8s deployment with SSH env vars and SSH key secret mount

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 22:56:54 +09:00

71 lines
1.7 KiB
YAML

apiVersion: apps/v1
kind: Deployment
metadata:
name: haproxy-mcp
namespace: default
labels:
app: haproxy-mcp
spec:
replicas: 1
selector:
matchLabels:
app: haproxy-mcp
template:
metadata:
labels:
app: haproxy-mcp
spec:
imagePullSecrets:
- name: gitea-registry
containers:
- name: haproxy-mcp
image: gitea.anvil.it.com/kaffa/haproxy-mcp:latest
ports:
- containerPort: 8000
protocol: TCP
env:
- name: MCP_HOST
value: "0.0.0.0"
- name: MCP_PORT
value: "8000"
- name: HAPROXY_HOST
value: "10.253.100.107"
- name: HAPROXY_PORT
value: "9999"
- name: SSH_HOST
value: "10.253.100.107"
- name: SSH_USER
value: "root"
- name: SSH_KEY
value: "/root/.ssh/id_rsa"
- name: SSH_PORT
value: "22"
- name: LOG_LEVEL
value: "INFO"
volumeMounts:
- name: ssh-key
mountPath: /root/.ssh
readOnly: true
readinessProbe:
tcpSocket:
port: 8000
initialDelaySeconds: 5
periodSeconds: 10
livenessProbe:
tcpSocket:
port: 8000
initialDelaySeconds: 10
periodSeconds: 30
resources:
requests:
memory: "128Mi"
cpu: "100m"
limits:
memory: "256Mi"
cpu: "500m"
volumes:
- name: ssh-key
secret:
secretName: haproxy-ssh-key
defaultMode: 0600