Проброс доступа к БД из пода k8s на локальную машину

Бывают ситуации, когда доступ к базе данных с локальной машины закрыт, но доступ из Kubernetes кластера к базе данных есть. В этом случае можно сделать проброс доступа по следующей схеме localhost <--> pod k8s <--> remote-db.

Создаем сущность pod в кластере k8s командой kubectl apply -f pod.yaml Файл pod.yaml:

apiVersion: v1
kind: Pod
metadata:
  name: mongodb-socat
  namespace: default
  labels:
    name: mongodb-socat
spec:
  containers:
  - name: mongodb-socat
    image: alpine/socat
    command: ["socat", "-dd", "tcp4-listen:27018,fork,reuseaddr", "remote-host-url-mongodb.com:27018/databaseName"]
    resources:
      limits:
        memory: "64Mi"
        cpu: "50m"
    ports:
      - containerPort: 27018

Здесь tcp4-listen:27018 - порт, который будет открыт приложением socat для прослушивания, в нашем случае 27018 порт MongoDB. Этот же порт необходимо указать в containerPort. remote-host-url-mongodb.com:27018/databaseName - хост, порт и имя базы данных mongodb для подключения приложения socat.

Далее выполняем команду проброса трафика из пода на localhost:

kubectl port-forward --namespace default pod/mongodb-socat 27018:27018

Далее подключаемся на машине где выполнена команда проброса на адрес localhost:27018 с нужными параметрами аутентификации.

Сведения о статье:
Дата публикации: 03/02/2025 11:32AM
Последнее обновление: 03/02/2025 11:32AM (rmntrvn)
Поделиться статьей: 
Автор: rmntrvn
Постоянная ссылка: http://kb.rmntrvn.ru/kb/port-forward-from-remotedb-to-k8s-pod-to-localhost
socat | mongodb | port-forward | localhost | mongodb | проброс порта из k8s кластера |