Я использую кластер Kubernetes в общедоступном облаке (Azure / AWS / Google Cloud) и у меня есть некоторые не-HTTP-сервисы, которые я хотел бы предоставить пользователям.
Для HTTP-сервисов,Обычно я бы использовал ресурс Ingress для публичного предоставления этой службы через адресуемую запись DNS.
Для не-HTTP, служб на основе TCP (например, для базы данных, такой как PostgreSQL), как я должен предоставлять их для общего доступапотребление?
Я подумал об использовании NodePort
сервисов, но для этого необходимо, чтобы сами узлы были общедоступными (полагаясь на kube-proxy
для маршрутизации на соответствующий узел). Я бы предпочел избегать этого, если это возможно.
LoadBalancer
сервисы кажутся другим вариантом, хотя я не хочу создавать выделенный балансировщик нагрузки облака для каждой службы TCP, которую я хочу
Мне известно, что контроллер входа NGINX поддерживает предоставление служб TCP и UDP , но для этого требуется статическое определение служб, которые вы хотите предоставить. В моем случае использования эти службы создаются и уничтожаются динамически, поэтому невозможно заранее определить эти сопоставления служб в статическом ConfigMap
.