Điều tôi muốn tránh làm là thiết lập một nhóm riêng biệt như HAProxy định tuyến trên mỗi cổng.
Bạn không cần thiết lập Pod riêng biệt như vậy.
Kubernetes Ingress theo mặc định không hỗ trợ các dịch vụ TCP hoặc UDP. Nhưng ví dụ, ingress-nginx
bộ điều khiển cung cấp cơ chế hỗ trợ TCP hoặc UDP trên các cổng khác nhau. Bạn có thể hiển thị các cổng TCP hoặc UDP bằng cách sửa đổi Bản đồ cấu hình.
Vì lý do này, bộ điều khiển Ingress này sử dụng các cờ '--tcp-services-configmap' và '--udp-services-configmap' để trỏ đến một bản đồ cấu hình hiện có trong đó khóa là cổng bên ngoài để sử dụng và giá trị cho biết dịch vụ để hiển thị bằng cách sử dụng định dạng:
<không gian tên/tên dịch vụ>:<cổng dịch vụ>:[PROXY]:[PROXY]
Kiểm tra thông tin bổ sung đây.
ConfigMap như vậy đã có sẵn trước triển khai Bộ điều khiển xâm nhập.
Vì vậy, hãy cố gắng:
1. Tạo một Bản đồ cấu hình với cấu hình dịch vụ TCP sau.
$ mèo xâm nhập-nginx-tcp.yml
phiên bản api: v1
loại: Bản đồ cấu hình
metadata:
tên: xâm nhập-nginx-tcp
không gian tên: mặc định
dữ liệu:
"22": không gian tên đích/dịch vụ đích:22
2. Trỏ bộ điều khiển Ingress tới ConfigMap này bằng cách sử dụng --tcp-services-configmap
cờ trong cấu hình như thế này:
$ kubectl nhận triển khai ingress-nginx-controller -o yaml
apiVersion: ứng dụng/v1
loại: Triển khai
metadata:
tên: bộ điều khiển xâm nhập-nginx
không gian tên: mặc định
thông số kỹ thuật:
...
mẫu:
...
thông số kỹ thuật:
hộp đựng:
- lập luận:
- /nginx-ingress-bộ điều khiển
- --tcp-services-configmap=$(POD_NAMESPACE)/ingress-nginx-tcp
...
3. Hiển thị cổng 22 trong Dịch vụ được xác định cho Sự xâm nhập như thế này:
$ kubectl get svc ingress-nginx-controller -o yaml
phiên bản api: v1
loại: Dịch vụ
metadata:
tên: bộ điều khiển xâm nhập-nginx
không gian tên: mặc định
thông số kỹ thuật:
cổng:
- tên: tcp-22
nútPort: 30957
cổng: 22
giao thức: TCP
cổng mục tiêu: 22
...
loại: LoadBalancer
...
Bạn có thể xác định bất kỳ số lượng cổng nào có thể được hiển thị bằng phương pháp này.
Có một lựa chọn khác cho những người đang sử dụng một biểu đồ điều khiển ingress-nginx. Hầu hết các cấu hình đã được thực hiện và bạn chỉ cần chỉ định các cổng của mình trong tcp phần như thế này:
tcp:
2222: "mặc định/ví dụ-tcp-svc:22"
ở đâu 2222
là cổng tiếp xúc và 22
là cổng dịch vụ.