Module Terraform mới phục vụ cân bằng tải không máy chủ

Tháng Năm 31, 2021
Nga Pham

Google Cloud vừa công bố một module Terraform mới để cung cấp bộ cân bằng tải được tối ưu hóa cho các ứng dụng không máy chủ. Giờ đây, bạn có thể hoàn thành các tác vụ cân bằng tải của mình với một module duy nhất, thay vì phải tự định cấu hình nhiều tài nguyên mạng khác nhau.

Việc xây dựng các bộ cân bằng tải Cloud HTTPS cho các ứng dụng không máy chủ đòi hỏi bạn phải biết nhiều API mạng và cách kết nối chúng. Module Terraform mới sẽ thay bạn giải quyết vấn đề này bằng cách trừu tượng hóa các chi tiết trong việc xây dựng một bộ cân bằng tải và cung cấp cho bạn một tài nguyên Terraform duy nhất để tương tác.

Giờ đây, bạn có thể dễ dàng đặt các ứng dụng không máy chủ của mình (Cloud Run, App Engine hoặc Cloud Functions) đằng sau Cloud Load Balancer có chứng chỉ TLS tự động và cho phép bạn thiết lập các tính năng như Cloud CDN, Cloud IAP hoặc các chứng chỉ tùy chỉnh khác với một vài dòng cấu hình.

Ví dụ cụ thể

Giả sử bạn có một nhóm các điểm cuối trong mạng không máy chủ (network endpoint group – NEG) cho ứng dụng Cloud Run của mình. Việc cung cấp trình cân bằng tải HTTPS trong phạm vi global của ứng dụng trên miền tùy chỉnh với module Terraform mới này sẽ giống như sau:

module "lb-http" {
  source            = "GoogleCloudPlatform/lb-http/google//modules/serverless_negs"
  version           = "~> 4.5"
  project           = "YOUR_PROJECT_ID"
  name              = "my-lb"
  managed_ssl_certificate_domains = ["YOUR_DOMAIN.COM"]
  ssl                             = true
  https_redirect                  = true
  backends = {
    default = {
      # List your serverless NEGs, VMs, or buckets as backends
      groups = [
        {
          group = google_compute_region_network_endpoint_group.default.id
        }
      ]
      enable_cdn = false
      log_config = {
        enable      = true
        sample_rate = 1.0
      }
      iap_config = {
        enable               = false
        oauth2_client_id     = null
        oauth2_client_secret = null
      }
      description             = null
      custom_request_headers  = null
      security_policy         = null
    }
  }
}

Như có thể thấy từ đoạn mã nguồn trên, bạn có thể thiết lập chứng chỉ TLS, quản lý và triển khai các chứng chỉ của riêng bạn, kích hoạt CDN và xác định chính sách bảo mật Identity-Aware Proxy hoặc Cloud Armor.

Khai thác sức mạnh của Terraform

Với module Terraform mới này, bạn có thể nâng cấp quá trình triển khai tự động hóa lên cấp độ tiếp theo, bằng cách tận dụng cú pháp HCL và các tính năng của Terraform.

Ví dụ như, một trường hợp phổ biến để sử dụng bộ cân bằng tải toàn cầu là để phục vụ lưu lượng truy cập từ nhiều vùng. Việc tự động triển khai ứng dụng của bạn đến hơn 20 khu vực và giữ cho cấu hình bộ cân bằng tải luôn cập nhật có thể yêu cầu một lượng lớn mã nguồn bash. Đây chính là lúc Terraform tỏa sáng.

Ví dụ sau đây triển khai ứng dụng Cloud Run cho tất cả các khu vực có sẵn và thêm chúng vào dưới bộ cân bằng tải toàn cầu. Để làm điều đó, bạn chỉ cần tạo một vùng có tên biến chứa danh sách các vị trí triển khai.

Sau đó, tạo một dịch vụ Cloud Run (và nhóm điểm cuối của nó), sử dụng cú pháp for_each:

resource "google_cloud_run_service" "default" {
  for_each = toset(var.regions)
  # ...rest of the configuration...
}
resource "google_compute_region_network_endpoint_group" "default" {
  for_each = toset(var.regions)
  # ...rest of the configuration...
}

Cuối cùng, thêm tất cả các nhóm điểm cuối mạng bằng cú pháp vòng lặp đơn giản:

module "lb-http" {
  # ...
  backends = {
      groups = [
        for neg in google_compute_region_network_endpoint_group.default:
        {
          group = neg.id
        }
      ]
  }
}

Bằng cách triển khai này, có thể tạo ra 60 tài nguyên API cho hơn 20 khu vực chỉ với một vài dòng sửa đổi đơn giản trong cấu hình Terraform, thay vì mã nguồn bash.

Giờ đây, bạn có thể tạo bộ cân bằng tải HTTP hoặc HTTPS trước các ứng dụng không máy chủ trên Google Cloud một cách dễ dàng hơn. Nếu bạn muốn tìm hiểu thêm, hãy xem ví dụ đầy đủ được triển khai tại repository Cloud Run multi-region deployment with Terraform.

Nguồn: Google Cloud Blog