[GCP] リダイレクトしかしないLBの建て方
特定のURLにリダイレクトするだけのLBが必要になったので、Terraformを使って建ててみた記録
Code
このコードでは自分のTwiterプロフィールページにリダイレクトさせている。
resource "google_compute_global_address" "default" {
name = "redirect-bl-ip"
}
resource "google_compute_global_forwarding_rule" "default" {
name = "redirect-bl-http"
ip_protocol = "TCP"
load_balancing_scheme = "EXTERNAL"
port_range = "80"
target = google_compute_target_http_proxy.default.id
ip_address = google_compute_global_address.default.id
}
resource "google_compute_target_http_proxy" "default" {
name = "redirect-bl-http-proxy"
url_map = google_compute_url_map.default.id
}
resource "google_compute_url_map" "default" {
name = "redirect-url-map"
# https://twitter.com/yamato_sorariku にリダイレクトさせる設定
default_url_redirect {
https_redirect = true # -> https でリダイレクト
host_redirect = "twitter.com" # -> ホスト名は twitter.com
path_redirect = "/yamato_sorariku" # -> パスは /yamato_sorariku
redirect_response_code = "FOUND" # -> ステータスコードは 302 で応答(一時的なリダイレクトとして使いたいから)
strip_query = true # -> もともと付与されていたクエリを削除
}
}
google_compute_global_forwarding_rule -> google_compute_target_http_proxy -> google_compute_url_map
という順番の構造
実用まで考えると google_compute_managed_ssl_certificate
を使って マネージドSSL証明書を作成するなどしてHTTPSにも対応させる必要あり。
resource "google_compute_managed_ssl_certificate" "default" {
name = "example-cert"
managed {
domains = ["redirect.example.com"]
}
}
resource "google_compute_target_https_proxy" "default" {
name = "redirect-bl-https-proxy"
url_map = google_compute_url_map.default.id
ssl_certificates = [google_compute_managed_ssl_certificate.default.id]
}
resource "google_compute_global_forwarding_rule" "default" {
name = "redirect-bl-https"
target = google_compute_target_https_proxy.default.id
port_range = 443
}