Bài viết sẽ chia sẻ đến bạn đọc một case study liên quan đến việc tạo connection giữa 2 nền tảng cloud khác nhau.

Công ty ABC phát triển một công cụ trao đổi trong lĩnh vực tài chính tương tự như Slack, Skype nhưng tích hợp tính năng bảo mật mã hóa message nhiều tầng. Ứng dụng được rất nhiều ngân hàng lớn như HSBC, CitiBank ưa chuộng, đặc biệt trong thời buổi Covid, mọi người buộc phải Work from Home.

Thời kì đầu, ứng dụng được triển khai lên VM trên Google Cloud. Hệ thống CI/CD với nền tảng chính là Jenkins cũng được xây dựng trên K8S của Google. Tuy nhiên với sự phát triển mạnh mẽ của cloud AWS, các server EC2 của AWS được sử dụng bên cạnh nền tảng VM cũ trên GCP.

Điều này đã đặt ra một bài toán: Làm thế nào để resources trên GCP cũ (VM, K8S cluster) có thể đảm bảo connection private, secure với resources trên AWS (EC2…).

Ví dụ một agent Jenkins được launch trên K8S cluster của GCP có thể connect (ping, curl…) tới 1 EC2 nằm trên VPC của AWS.

Giải pháp dùng Cloud NAT gateway

Do các worker của K8S cluster đều nằm trong private sub-net nên Cloud NAT được sử dụng để kết nối ra ngoài network của GCP.

NAT hay Network Address Translation giúp địa chỉ mạng cục bộ (Private) truy cập được đến external network. Cụ thể về NAT các bạn có thể tham khảo trên internet.

Như vậy Jenkins k8s cluster được setup thêm 1 NAT gateway để có thể truy cập ra ngoài mạng GCP. Bạn có thể tham khảo ở đây: https://cloud.google.com/nat/docs/using-nat#gcloud

Bạn có thể để gcp tự allocate IP cho cho NAT hoặc manual tạo external IP cho NAT.

Trên AWS EC2, configure security group, set inbound rules để allow connection, ví dụ dưới là mở cổng 443 HTTPs cho NAT.

Như vậy là Jenkins Agent trên K8S của GCP có thể connect tới EC2 trên AWS qua cổng HTTPS 443.

Site-to-site VPN between GCP and AWS with dynamic BGP routing

Do NAT vẫn là public IP, exposed ra internet. Do đó công ty ABC muốn tạo một đường truyền bảo mật giữa GCP và AWS, không đi ra public internet. Một VM trên GCP có thể connect (Ping, curl…) tới EC2 của AWS dùng private IP (internal network).

Giải pháp VPC site-to-site được sử dụng:

VM của GCP và EC2 của AWS đều nằm trong VPC, yêu cầu đặt ra là VM và EC2 có thể ping hoặc curl thông qua private IP.

Các bước chung như sau:

  1. Trên GCP, tạo ra 1 Cloud VPN gateway và VPN tunnel.
  2. Trên AWS, tạo Virtual Private Gateway và Site to Site VPN connection.

Bước 1: Tạo classic VPN gateway và VPN Tunnel

VPN tunnel là một đường truyển bảo mật giữa 2 network. Các gói tin qua lại giữa 2 network được đóng gói secure và gửi trên tunnel này.

Tham khảo https://cloud.google.com/vpn/docs/how-to/creating-static-vpns

Sau khi tạo thành công thì được kết quả như sau:

Bước 2: Trên AWS, create Virtual Private Gateway, Customer gateway và Site to Site VPN connection

 

Tạo virtual private gateway và attach vào VPC

Sẽ được kết quả như ở dưới:

Tạo site-to-site VPN connection

Có thể run qua cli hoặc console nhập id của customer-gateway-id và vpn-gateway-id bạn vừa tạo.

Sẽ thấy trạng thái UP chỉ thị connection VPN giữa 2 cloud đã thành công.

Như vậy resources trên GCP có thể connect với resources trên AWS qua đường internal IP, không public ra internet, đường truyền được bảo mật.

Kết luận

2 phương pháp trên đều có những ưu nhược điểm riêng. Giải pháp Cloud Nat có ưu điểm là thực hiện khá đơn giản. Tuy nhiên Cloud Nat IP là public address nên có rủi ro về bảo mật. Ngược lại, giải pháp VPN sử dụng một đường truyền riêng, private nên đảm bảo security tuy nhiên việc thực hiện tương đối phức tạp. Người quản trị sẽ tùy vào nhu cầu mà lựa chọn phương pháp phù hợp.

Đỗ Trọng Nguyên – FPT Software

FPT TechInsight chính thức ra mắt chuyên mục mới – “GÓC NHÌN BẠN ĐỌC” là nơi bạn đọc có thể chia sẻ những bài viết về công nghệ mới, kinh nghiệm lập trình, tham gia dự án,… đến cộng đồng yêu công nghệ.  Các bài viết chất lượng và được đăng tải trên website FPT TechInsight sẽ nhận được một khoản nhuận bút hấp dẫn thay lời cảm ơn vì những đóng góp của tác giả cho cộng đồng.

 

Bài viết và ý kiến đóng góp, quý độc giả vui lòng gửi về địa chỉ email: [email protected]. Tiêu đề có ghi rõ “Góc nhìn bạn đọc – Họ và tên”. Hotline: +84 853 543 538

Tin liên quan: