Kubernetes pod перенаправить на тот же порт в другом модуле - PullRequest
0 голосов
/ 09 ноября 2018

У меня есть развертывание с образом php, которое соединяется с развертыванием redis в порту 6379.

Проблема в том, что приложение php подключается к хосту 127.0.0.1 своего собственного модуля, но redis находится в другом модуле (и имеет свою собственную службу ClusterIP).

Я не могу изменить код приложения, поэтому я хочу перенаправить порт 6379 модуля php для того же порта на порту redis.

Как я могу это сделать?

1 Ответ

0 голосов
/ 10 ноября 2018

kubernetes использует socat для переадресации портов с kubectl, поэтому, если они настолько доверяют этому, кажется разумным, что вы тоже можете этому доверять.

Поместите его во второй контейнер, который работает рядом с вашим php-контейнером, запустите socat в режиме пересылки и надейтесь на лучшее:

containers:
- name: my-php
  # etc
- name: redis-hack
  image: my-socat-container-image-or-whatever
  command:
  - socat
  - TCP4-LISTEN:6379,fork
  - TCP4:$(REDIS_SERVICE_HOST):$(REDIS_SERVICE_PORT)
  # assuming, of course, your Redis ClusterIP service is named `redis`; adjust accordingly

Так как все Pod совместно используют одно и то же пространство имен сети, второй контейнер также будет прослушивать "127.0.0.1"

Сказав все это, в качестве комментария к вашей ситуации, это ужасная ситуация, чтобы ввести такое количество хакерских решений, чтобы обойти очень, очень простую проблему просто отсутствия жесткого кода приложения «127.0.0.1» в качестве хоста подключения Redis

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...