Как сделать внешний REST API (работающий в .Net на моем главном компьютере) доступным в K8s из службы или внешнего имени?
У меня есть REST API, работающий локально на моем ноутбуке по адресу
https://localhost:5001/something
. Я хочу, чтобы это было доступно внутри кластера Kubernetes по DNS-имени K8s. Например, приложение, работающее внутри модуля, может использовать
some-service
вместо того, чтобы использовать весь URL.
Кроме того, поскольку относительно хост-машины, как мне получить
Service
или же
ExternalName
достигнуть
localhost
на хост-машине, а не внутри кластера K8s?
Я пытался
docker.host.internal
(как предлагается здесь), но это не сработало. И это из документации K8s говорит, что это не может быть loopback:
IP-адреса конечных точек не должны быть: loopback (127.0.0.0/8 для IPv4, ::1/128 для IPv6) или локальными для ссылки (169.254.0.0/16 и 224.0.0.0/24 для IPv4, fe80:: / 64 для IPv6).
Я бегу:
- Хост-компьютер: Ubuntu 20.04
- K8s: k3d
- Веб-API: (.Net Core 3.1 в Linux, созданный
dotnet new webapi MyAPI
)
1 ответ
Telepresence - это инструмент, созданный для быстрого локального тестирования вашего приложения с кластером k8s. Он позволяет запускать одну службу локально при подключении ее к удаленному кластеру Kubernetes.
Он заменяет двусторонний сетевой прокси-сервер для вашего обычного модуля, работающего в кластере Kubernetes. Этот модуль передает данные из вашей среды Kubernetes (например, TCP-соединения, переменные среды, тома) в локальный процесс. Сетевой процесс локального процесса прозрачно переопределен, так что вызовы DNS и TCP-соединения маршрутизируются через прокси-сервер в удаленный кластер Kubernetes.
Альтернативный способ - создать сервис, поддерживаемый