Я хотел бы подключиться к кластеру PostgreSQL (9.6), который работает внутри OpenShift (3.9), используя переадресацию портов, как описано здесь .С этой целью я настроил и проверяю правильность переадресации портов на хосте-перемычке (вне кластера OpenShift) следующим образом:
oc port-forward $pod 5432:5432
netstat -ln | grep 5432 # "tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN"
psql -U postgres -h localhost # OK
psql -U postgres -h $(hostname -i) # error: "connection refused"
Таким образом, выглядит так, как будто переадресация портов прослушивает только localhost
, но недругой IP-адрес хоста.В конечном итоге я хочу подключиться к базе данных через хост перехода с других удаленных хостов, поэтому «localhost» будет недостаточно.
Как настроить переадресацию портов (OpenShift) таким образом, чтобы это позволилодоступ к перенаправленному порту также с удаленных хостов?Я полагаю, что Iptables (в сочетании с переадресацией портов OpenShift) мог бы добиться цели, но я пока не знаю, как и если есть более простой подход.(Хост перехода работает под управлением Debian 9.5.)
UPDATE Подход, сочетающий туннель SSH и переадресацию портов OpenShift (Kubernetes), по-видимому, может решить эту проблему.Это было предложено в ссылке, приведенной в принятом ответе ниже.
на хосте перехода (1-й сеанс):
ssh -N -L $(hostname -i):5432:localhost:5433 $(whoami)@$(hostname)
на хосте перехода (2-й сеанс):
oc port-forward $pod 5433:5432
на удаленном хосте:
psql -U postgres -h jump-host