Điểm:1

Cách hướng lưu lượng truy cập đến dịch vụ Điện toán hoặc Cloud Run dựa trên URL

lá cờ jp

Chúng tôi hiện có một ứng dụng web chạy trên Máy ảo điện toán và đang nỗ lực di chuyển dần ứng dụng đó sang Cloud Run. (Chúng tôi đang thực hiện dần dần vì chương trình phụ trợ hiện tại bằng PHP và chúng tôi đang viết lại nó bằng Go, mỗi lần một điểm cuối)

Trang web của chúng tôi hiện được truy cập tại ví dụ:
https://www.myapp.com
và API tại:
https://www.myapp.com/books

Kế hoạch của chúng tôi là có thể truy cập API Cloud Run/Go mới theo đường dẫn 'v2':
https://www.myapp.com/v2/books
hoặc trên một tên miền phụ
https://v2.myapp.com/books
rồi quyết định sử dụng API nào trong ứng dụng khách dựa trên những gì đã được di chuyển xong.

Tôi đã tự hỏi một cách tốt để đi về điều này sẽ là gì.

Những điều tôi đã xem xét (với tư cách là người mới bắt đầu GCP)

  • Chúng ta đã có nginx chạy trên Compute VM, vì vậy hãy thiết lập một proxy ngược cho https://www.myapp.com/v2 Lúc đầu có vẻ là một ý tưởng hay, nhưng có vẻ như hiện tại không có cách nào để truy cập Cloud Run từ Điện toán qua IP riêng, vì vậy yêu cầu sẽ phải gửi qua internet làm chậm mọi thứ (cũng không chắc liệu ủy quyền ngược cho bên ngoài URL sẽ gây ra sự cố với xác thực, v.v?)

  • với https://v2.myapp.com/books tùy chọn, có vẻ như việc lập bản đồ các miền tùy chỉnh cho Cloud Run vẫn còn trong phát hành bản xem trước vì vậy tôi do dự về việc sử dụng nó trong hệ thống sản xuất, lý tưởng nhất là chúng tôi muốn sử dụng chứng chỉ SSL của riêng mình, chứng chỉ này dường như không được hỗ trợ.

  • Tùy chọn lưu trữ Firebase có vẻ hơi phức tạp và cũng có thời gian chờ yêu cầu là 60 giây, quá ngắn đối với một số video tải lên, v.v. mà chúng tôi nhận được.

  • Bộ cân bằng tải cho NEG sẽ tăng thêm một chút phức tạp/chi phí nhưng đó dường như là tùy chọn khác. Có vẻ như các NEG không có máy chủ không thể kết nối với Máy tính và các NEG VM được quản lý không thể kết nối với Cloud Run, vậy tôi có cần một trong số đó trong trường hợp đó không?

Goli Nikitha avatar
lá cờ ng
Tham khảo [tài liệu] này(https://cloud.google.com/run/docs/conforming/connecting-vpc) để sử dụng chạy trên đám mây và IP riêng GCE (máy tính) thông qua VPC được chia sẻ.
Điểm:0
lá cờ br

Nhận xét bên dưới về tất cả 4 tùy chọn bạn đã đề cập

  • Chúng ta đã có nginx chạy trên Compute VM, vì vậy hãy thiết lập một proxy ngược cho https://www.myapp.com/v2 có vẻ như là một ý tưởng tốt tại đầu tiên, nhưng có vẻ như hiện tại không có cách nào để truy cập Cloud Chạy từ Điện toán qua IP riêng nên yêu cầu sẽ phải tắt qua internet làm mọi thứ chậm lại (cũng không chắc có đảo ngược không ủy quyền cho một URL bên ngoài sẽ gây ra sự cố với xác thực vân vân?)

Điều này đúng về mặt kỹ thuật, bạn có thể thiết lập dịch vụ Cloud Run để chỉ chấp nhận lưu lượng truy cập từ VPC (cái này được gọi là Tùy chọn xâm nhập, bạn có thể đọc về nó trong tài liệu tại đây [1]). Và khi bạn thực hiện, Dịch vụ Cloud Run của bạn sẽ tiếp tục phân phát trên URL có vẻ là URL công khai (URL được tạo khi bạn triển khai dịch vụ).Tuy nhiên, URL đó chỉ có thể truy cập được từ VPC và ngay cả khi có vẻ như khách hàng sẽ thực hiện cuộc gọi đến một dịch vụ internet, thì lưu lượng truy cập đó vẫn nằm trong mạng của chúng tôi và không bao giờ rời khỏi đường trục của chúng tôi, vì vậy về mặt kỹ thuật, điều này sẽ không gây thêm độ trễ.

  • với https://v2.myapp.com/books tùy chọn, có vẻ như ánh xạ miền tùy chỉnh cho Cloud Run vẫn đang trong bản phát hành xem trước nên tôi do dự về việc sử dụng nó trong một hệ thống sản xuất, lý tưởng nhất là chúng tôi muốn sử dụng chứng chỉ SSL của riêng chúng tôi mà dường như không được hỗ trợ.

Tôi sẽ không khuyến nghị và sử dụng tính năng xem trước trong sản xuất, có nguy cơ tính năng đó sẽ thay đổi theo cách không tương thích ngược. Về chủ đề sử dụng chứng chỉ SSL của riêng bạn, bạn có thể triển khai HTTP LoadBalancer trước dịch vụ Cloud Run (được đặt ở chế độ riêng tư) và tùy chỉnh LoadBalancer để phù hợp với nhu cầu của bạn.

  • Tùy chọn lưu trữ Firebase có vẻ hơi phức tạp và cũng có thời gian chờ yêu cầu là 60 giây, quá ngắn đối với một số video tải lên, v.v. chúng tôi nhận được.

Tôi không quen lắm với Firebase.

  • Bộ cân bằng tải cho NEG sẽ tăng thêm một chút phức tạp/chi phí nhưng điều đó dường như là lựa chọn khác. Có vẻ như NEG không có máy chủ không thể kết nối với Điện toán và VM NEG được quản lý không thể kết nối với Cloud Run nên tôi có cần một trong số đó trong trường hợp đó không?

Tùy chọn LoadBalancer trông có vẻ phức tạp nhưng thực ra không phải vậy, bạn có thể sử dụng một số thứ như Terraform để cung cấp LoadBalancer, bạn chỉ phải thực hiện một lần

Hy vọng điều này sẽ giúp làm sáng tỏ các lựa chọn của bạn [1] https://cloud.google.com/run/docs/securing/ingress

jezjez avatar
lá cờ jp
Cảm ơn vì câu trả lời, bạn nên biết quan điểm của mình về việc thực hiện cuộc gọi qua internet, tôi đã cho rằng điều này sẽ làm mọi thứ chậm lại rất nhiều nhưng nếu không, tôi nghĩ chúng ta có thể thực hiện tùy chọn đó. Tôi cũng sẽ xem xét thêm về Cân bằng tải và Terraform

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.