Kubernetes — доступ к службе ClusterIP с помощью Minikube

#kubernetes #minikube

#kubernetes #minikube

Вопрос:

Для моих служб был установлен тип NodePort однако на самом деле внешний доступ для этого не требуется — им нужно только иметь возможность общаться друг с другом.

Поэтому я предполагаю, что мне следует изменить их на значения по умолчанию ClusterIP однако вопрос в том, как я могу продолжать получать доступ к этим службам во время моей локальной разработки?

Итак, когда я вношу изменения с NodePort на ClusterIP , а затем перехожу к minikube service list , это, естественно, показывает no node port , однако, как я могу теперь получить доступ — есть ли какой-то специальный адрес конечной точки, который я могу откуда-то получить?

Спасибо.

Ответ №1:

Вам потребуется получить к ней доступ, как и в любом другом внекластерном случае. Обычно это означает либо kubectl port-forward , либо kubectl proxy , хотя я предпочитаю первое. В общем случае службы ClusterIP доступны только изнутри кластера, доступ через переадресаторы используется только для отладки или нечастого доступа.

Комментарии:

1. Хорошо — а в остальном, правильно ли я на самом деле думаю, что мне следует переключать их с NodePort на ClusterIP ? Я предполагаю, что это рекомендуемая наилучшая практика?

2. Кроме того, я могу использовать переадресацию портов и получить доступ к службе: kubectl port-forward mygreatservice-94fc44965-pbbtg 3000:3000 -n my-namespace однако у меня есть 10 таких служб. Есть ли более удобный способ сделать это?

3. Ожидается ли, что эта служба будет использоваться только внутри кластера или к ней можно получить доступ извне?

4. Доступ к ней осуществляется внутри кластера

5. Тогда да, используйте clusterip

Ответ №2:

Поскольку у вас есть 10 таких служб, я считаю, что использование контроллера Ingress здесь будет лучшим вариантом. Я работал над аналогичным сценарием, когда мы хотели бы получить доступ к нашим сервисам напрямую в локальной среде или среде контроля качества, а не в рабочей.

Мы использовали входной контроллер Nginx. Более подробную информацию о ingress вы можете получить здесь. Он был довольно прост в настройке и хорошо служил своей цели.

Спасибо!

Комментарии:

1. Итак, я просто настраиваю traefik, и, похоже, это может помочь. Итак, просто для проверки, для ваших целей тестирования у вас есть, скажем, «исходный файл разработки», который вы применяете, чтобы предоставить вам доступ ко всем вашим сервисам. Тогда в рабочей среде вы бы не хотели, чтобы эти службы были открыты открыто, поэтому вы не применяете этот вход?

2. @userMod2 Да. У нас был бы доступ только к общедоступным сервисам.