apiVersion: apps/v1 kind: Deployment metadata: name: postgres-tunnel namespace: postgres-tunnel spec: selector: matchLabels: app: postgres-tunnel template: metadata: labels: app: postgres-tunnel spec: containers: - name: tunnel image: ghcr.io/16janis12/ssh-client-docker:main imagePullPolicy: Always command: [/bin/sh, -c] args: - | exec ssh -N \ -o StrictHostKeyChecking=no \ -o ServerAliveInterval=30 \ -o ServerAliveCountMax=3 \ -o ExitOnForwardFailure=yes \ -L 0.0.0.0:5432:$(POSTGRES_REMOTE_HOST):$(POSTGRES_REMOTE_PORT) \ -i /ssh-key/id_rsa \ -p $(SSH_PORT) \ $(SSH_USER)@$(SSH_HOST) envFrom: - configMapRef: name: postgres-tunnel-config ports: - containerPort: 5432 name: postgres volumeMounts: - name: ssh-key mountPath: /ssh-key readOnly: true resources: requests: cpu: 10m memory: 8Mi limits: cpu: 50m memory: 32Mi livenessProbe: tcpSocket: port: 5432 initialDelaySeconds: 15 periodSeconds: 20 readinessProbe: tcpSocket: port: 5432 initialDelaySeconds: 5 periodSeconds: 10 volumes: - name: ssh-key secret: secretName: postgres-tunnel-ssh-key defaultMode: 0400 restartPolicy: Always