доступ до rds или сервиса внутри k8s с локального компа (проброс трафика через POD)

Thank you for reading this post, don't forget to subscribe!

воз­ник­ла зада­ча сту­чать­ся до RDS(aws) или сер­ви­сов внут­ри кла­сте­ра k8s с локаль­но­го ком­па а не из вне.
что­бы это реа­ли­зо­вать будет настро­е­но ssh тунелирование:

1. Запус­ка­ем openssh-server внут­ри наше­го кла­сте­ра порт 2222 пароль test поль­зо­ва­тель test:

kubectl run test-ssh --image=linuxserver/openssh-server --restart=Never -n dev --port=2222 --env="PASSWORD_ACCESS=true" --env="USER_PASSWORD=test" --env="USER_NAME=test" --env="SUDO_ACCESS=true"

2. Доуста­нав­ли­ва­ем необ­хо­ди­мые паке­ты внутрь наше­го контейнера:

kubectl exec -ti -n dev test-ssh -- bash -c "apk add python3"

3. Настра­и­ва­ем port-forward:

kubectl port-forward pods/test-ssh 2222:2222 -n dev

4. Про­ки­ды­ва­ем весь наш тра­фик через этот контейнер:

sshuttle -r test@localhost:2222 0.0.0.0/0 -vv

5. Пере­клю­ча­ем­ся на дру­гое окно кон­со­ли или откры­ва­ем новую и про­дол­жа­ем рабо­тать в нём.

 

Sshuttle - дает воз­мож­ность создать VPN соеди­не­ние от вашей локаль­ной маши­ны до уда­лен­ной маши­ны с исполь­зо­ва­ни­ем под­клю­че­ния по ssh. Для рабо­ты необ­хо­дим пакет python вер­сии не ниже 2.3

Для рабо­ты вы долж­ны иметь пра­ва root поль­зо­ва­те­ля на локаль­ной машине, но при этом под­клю­че­ние к уда­лен­но­му сер­ве­ре может быть орга­ни­зо­ван­но с пра­ва­ми обыч­ных непри­ви­ле­ги­ро­ван­ных пользователей.

Воз­мож­но одно­вре­мен­ное под­клю­че­ние сра­зу к несколь­ким уда­лен­ным серверам

Уста­нов­ка

sudo yum install sshuttle