🛠️

GCPでメンテナンスページに飛ばす仕組みを作る (LB生きてる編)

2023/09/27に公開

この記事について

GCPにおいてLBが生きているときにCloud Armorを使ってメンテナンスページに飛ばす方法です。
そのためLBそのものが不通になる場合はカバーしていません。

方法

Cloud Armorで対象のアクセスに対してCloud Storageなどで配信している静的ファイルにリダイレクトさせる、といったことを行います。
まれにリダイレクトをLB(ingress)でやろうとしていることもありますが、それだとLBのメンテナンスに対応できないためこちらの方法が良いと思います。

  1. メンテページで表示させたいhtmlなどを作成
  2. 上記ファイルをS3やCloud Storageなどで公開
  3. Cloud Armorで図1のようなリダイレクトルールを設定
  4. (任意) 作業者用のIPのみを通すものをリダイレクトルールよりも高い優先度で設定
  5. メンテが終わったらCloud Armor設定を元に戻す


図1: リダイレクトルール

図1のTerraformのコードは以下です。Cloud Armor部分に追加してください。

rule {
    action   = "redirect"
    priority = "10000"
    match {
      versioned_expr = "SRC_IPS_V1"
      config {
        src_ip_ranges = ["*"]
      }
    }
    redirect_options {
      target = "https://hoge.s3.ap-northeast-1.amazonaws.com/page.html"
      type   = "EXTERNAL_302"
    }
    description = "Redirect to maintenance page"
  }

Discussion