Проблема
У меня есть два модуля A
и B
, работающих в кластере на minikube, оба имеют внешние IP-адреса www.service-a.com
и www.service-b.com
. Оба внешних IP-адреса доступны извне.
Мне нужно A
, чтобы иметь возможность вызывать B
с его внешним IP-адресом, а не с его кластерным DNS, то есть A
нужно использовать www.service-b.com
, а не b.svc.cluster.local
(который работает, но я не могу его использовать).
Я установил A
на использование hostNetwork: true
и dnsPolicy: ClusterFirstWithHostNet
. Если я разверну док-контейнер NodeJS вручную, он действительно сможет подключиться и найти его. Однако A
по-прежнему не может подключиться к service-b.com
. Я неправильно использую hostNetwork
? Как я могу настроить свой модуль для такого подключения к b
?
Развертывание YAML
...
spec:
replicas: 1
selector:
matchLabels:
app: a-app
template:
metadata:
labels:
app: a-app
spec:
hostNetwork: true
dnsPolicy: ClusterFirstWithHostNet
containers:
...
Сервис B YAML
...
spec:
externalTrafficPolicy: Cluster
type: LoadBalancer
ports:
- port: ...
targetPort: ...
protocol: TCP
name: http
...
Фон:
Я использую Minio (локальное решение, подобное S3), и мне нужно назначить URL-адреса для получения и размещения объектов. Модули Minio работают в том же кластере, что и мой модуль аутентификации, который генерирует заранее заданные URL-адреса. Предписанные URL-адреса будут использоваться извне кластера. Следовательно, я не могу подписать URL-адрес с именами DNS кластера, такими как minio.svc.cluster.local
, потому что этот URL-адрес не будет доступен извне кластера, и замена хоста на my-minio.com
и сохранение подписи не работают, потому что я предполагаю, что minio подписывает весь хост и путь. Следовательно, мне нужно подключить модуль аутентификации к общедоступной my-minio.com
Minio, что, похоже, не работает.