パブリッククラウド(Azure / AWS / Google Cloud)でKubernetesクラスターを実行しています。ユーザーに公開したい非HTTPサービスがあります。
HTTPサービスの場合、通常はIngressリソースを使用して、アドレス指定可能なDNSエントリを介してそのサービスを公開します。
HTTP以外のTCPベースのサービス(PostgreSQLなどのデータベース)の場合、これらを公開して公開するにはどうすればよいですか?
NodePort
サービスの使用を検討しましたが、これにはノード自体がパブリックにアクセスできる必要があります(kube-proxy
適切なノードへのルーティングに依存しています)。できればこれを避けたい。
LoadBalancer
サービスは別のオプションのように見えますが、公開したいTCPサービスごとに専用のクラウドロードバランサーを作成したくありません。
NGINX IngressコントローラーがTCPおよびUDPサービスの公開をサポートしていることは承知していますが、公開するサービスの静的な定義が必要なようです。私の使用例では、これらのサービスは動的に作成および破棄されているため、これらのサービスマッピングを静的に事前に定義することはできませんConfigMap
。