Tôi đang chạy cụm Kubernetes trong đám mây công cộng (Azure / AWS / Google Cloud) và tôi có một số dịch vụ không phải HTTP mà tôi muốn cung cấp cho người dùng.
Đối với các dịch vụ HTTP, tôi thường sử dụng tài nguyên Ingress để hiển thị công khai dịch vụ đó thông qua mục nhập DNS có địa chỉ.
Đối với các dịch vụ không dựa trên HTTP, dựa trên TCP (ví dụ: cơ sở dữ liệu như PostgreQuery), tôi nên trưng bày những dịch vụ này như thế nào cho tiêu dùng công cộng?
Tôi đã cân nhắc sử dụng NodePort
các dịch vụ, nhưng điều này đòi hỏi bản thân các nút phải được truy cập công khai (dựa vào kube-proxy
định tuyến đến nút thích hợp). Tôi muốn tránh điều này nếu có thể.
LoadBalancer
các dịch vụ có vẻ như là một tùy chọn khác, mặc dù tôi không muốn tạo một bộ cân bằng tải đám mây chuyên dụng cho mỗi dịch vụ TCP mà tôi muốn trưng ra.
Tôi biết rằng bộ điều khiển NGINX Ingress hỗ trợ hiển thị các dịch vụ TCP và UDP , nhưng dường như điều đó đòi hỏi một định nghĩa tĩnh về các dịch vụ bạn muốn trưng ra. Đối với trường hợp sử dụng của tôi, các dịch vụ này đang được tạo và hủy một cách linh hoạt, do đó không thể xác định các ánh xạ dịch vụ này ở phía trước trong một tĩnh ConfigMap
.