Использование NodePort для подключения к базе данных - PullRequest
0 голосов
/ 06 февраля 2020

Ситуация :

Я работаю в большой компании, и у нас есть кластер k8s.

У нас также есть база данных, которая размещена где-то еще за пределами кластера.

База данных IP-адрес и кластер имеют двунаправленную очистку FW.

Таким образом, приложения, размещенные внутри кластера, могут подключаться к базе данных.

У моей машины нет доступа к базе данных. Я не могу проверить свое приложение, написать запросы и так далее. Это замедляет меня и заставляет работать go, если для этого требуются какие-либо операции с базами данных.

Вопрос:

Поскольку я могу подключиться и развернуть на кластере. Могу ли я развернуть NodePort / Service / et c в службе, которая перенаправляет его непосредственно в базу данных?

Таким образом, это «обманет» базу данных, если запрос поступает из кластера. Но вместо этого он исходит из моей машины дома.

Кто-нибудь пробовал что-то подобное?

Заранее спасибо

Ответы [ 2 ]

2 голосов
/ 06 февраля 2020

вы не сможете настроить прокси таким образом. Если у вас есть приложение, которое получает запросы и перенаправляет их в вашу базу данных.

Более простым решением будет развертывание приложения в кластере (если это возможно) или развертывание тестового модуля в кластере (с использованием базового образа). например, debian, busybox или alpine linux (любое изображение соответствует вашим потребностям). Затем вы можете подключиться к модулю ( kubectl exe c -it podname).

1 голос
/ 06 февраля 2020

Вы можете попробовать использовать сервис NodePort без селектора и определить свою собственную конечную точку, указывающую на IP-адрес базы данных.

Например:

vagrant@k8sMaster:~$ nslookup google.fr
Name:   google.fr
Address: 216.58.207.131

echo '
apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  type: NodePort
  ports:
    - protocol: TCP
      port: 443
      targetPort: 443
' >> svc-no-sel.yaml
echo '
apiVersion: v1
kind: Endpoints
metadata:
  name: my-service
subsets:
  - addresses:
      - ip: 216.58.207.131
    ports:
      - port: 443
' >> ep-no-sel.yaml

k apply -f svc-no-sel.yaml
k apply -f ep-no-sel.yaml

Где вы заменяете Google IP / Порт по вашей базе данных IP / Порт.

Затем в данном примере вы можете настроить таргетинг на сервис, выполнив

curl -k https://<node-ip>:<node-port>

Документация по сервису без селектора здесь: https://kubernetes.io/docs/concepts/services-networking/service/#services -without- селекторы

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