Tôi có một ứng dụng chạy trong nhiều cụm K8; Giả sử có một dịch vụ giao diện người dùng và hai dịch vụ phụ trợ.
Tôi sử dụng proxy NGINX cho các yêu cầu từ giao diện người dùng đến các dịch vụ phụ trợ. Phiên bản NGINX thông thường, không phải NGINX +.
Đây là nginx.conf:
người phục vụ {
....
set $back1 "<tên máy k8s cho dịch vụ backend1>";
set $back2 "<tên máy k8s cho dịch vụ backend2>";
vị trí /back1 {
viết lại ^/back1/(.*)$ /$1 break;
proxy_pass http://$back1;
}
<và tương tự cho dịch vụ phụ trợ 2>
}
Vì vậy, về cơ bản, điều xảy ra là trong ứng dụng giao diện người dùng của tôi, tôi đặt địa chỉ dịch vụ phụ trợ thành máy chủ cục bộ/back1 và máy chủ cục bộ/back2, các yêu cầu nhấn NGINX sẽ loại bỏ những yêu cầu đó trở lại1 và trở lại2 tiền tố và gọi bất kỳ điểm cuối nào tôi chỉ định sau trong các dịch vụ phụ trợ thực tế trong K8s.
Vì tôi có nhiều cụm K8, tên máy chủ của các dịch vụ phụ trợ khác nhau và tôi cần tính đến điều đó trong conf NGINX của mình.
Câu hỏi là:
Có cách nào để NGINX phân biệt giữa các cụm K8 của tôi không?
Có lẽ tôi có thể chuyển một biến môi trường tới vùng chứa đang chạy dịch vụ giao diện người dùng của mình và tạo một nếu câu lệnh trong nginx.conf. Cái gì đó như:
người phục vụ {
if (${env} = "cluster1") {
đặt $back1 = "<tên máy chủ cụm1>"
}
nếu (${env} = "cluster2") {
đặt $back1 = "<tên máy chủ cụm2>"
}
}
Hoặc nếu tôi có thể thực thi lệnh shell trong nginx conf để lấy tên máy chủ và viết các khối if tương tự.
Tôi sẽ đánh giá cao bất kỳ sự giúp đỡ về vấn đề này!