Skip to main content

Runops Proxy

Runops proxy allows forwarding remote TCP services locally.

Agent Setup

The agent is responsible for managing TCP connections in your local infrastructure, for proxying MySQL connections, a target with type mysql is required with the configurations described in the integrations section. The agent must be able to reach out the MySQL instance.

Docker Deployment

AGENT_TOKEN=
AGENT_TAG=
docker run --rm -it runops/rproxy agent \
--tag "$AGENT_TAG" \
--token $AGENT_TOKEN \
-e MYSQL_CONFIG='{ "MYSQL_HOST": "", "MYSQL_PORT": "", "MYSQL_USER": "", "MYSQL_PASS": "" }'

Kubernetes Deployment

Alter the snippet below to deploy a new instance in Kubernetes

# The agent token to connect to the API
# If you have any agent deployed, use the same token.
# Otherwise run the command to obtain a new one: runops agents create-token -f
AGENT_TOKEN=
# If you need multiple agents running in distinct networks, tag each instance with a unique name.
# A target must always match an agent instance, leave empty if this is your first instance.
AGENT_TAG=
kubectl apply -f - <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: rproxy-agent
name: rproxy-agent
namespace: runops
spec:
replicas: 1
selector:
matchLabels:
app: rproxy-agent
strategy:
type: Recreate
template:
metadata:
labels:
app: rproxy-agent
spec:
containers:
- env:
# The AWS environments is required when there are
# targets using the secret manager as secret provider
# - name: AWS_ACCESS_KEY_ID
# value: ''
# - name: AWS_SECRET_ACCESS_KEY
# value: ''
# - name: AWS_REGION
# value: ''
# This environment is used if the secret provider option in the target
# is 'env-var'. The environment name must match with the secret path value of the target
# If you have multiple database instances, add new environments configuration with distinct
# names.
- name: MYSQL_CONFIG
value: '{ "MYSQL_HOST": "", "MYSQL_PORT": "", "MYSQL_USER": "", "MYSQL_PASS": "" }'
- name: TOKEN
value: $AGENT_TOKEN
- name: TAG
value: "$AGENT_TAG"
image: "runops/rproxy"
args: ["agent"]
imagePullPolicy: Always
resources:
requests:
memory: "1024Mi"
cpu: "500m"
name: rproxy-agent
EOF

Running the Proxy

  • Download and install the runops cli: npm install -g runops

First authenticate with a valid user in your organization

runops login

Start

TARGET_NAME=
rproxy mysql -c $TARGET_NAME

Try to connect in the database instance using your prefered MySQL client

mysql -h 127.0.0.1 --port 3307

There's no need to pass the username and password