Cloud Composer 環境で IP マスカレード エージェントを有効にする

Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3

このページでは、環境で IP マスカレード エージェントを有効にする方法について説明します。

Cloud Composer の IP マスカレード エージェントについて

Cloud Composer は、ご使用の環境の IP マスカレード エージェントをサポートしています。

IP マスカレードは、ネットワーク アドレス変換(NAT)の一種で、複数のクライアントが 1 つの IP アドレスを使用して宛先にアクセスできる多対 1 の IP アドレス変換を行います。

Cloud Composer では、ワークロードが GKE で実行されます。正しく機能させるには、ノード(VM)、GKE Pod、Service の IP 範囲が必要です。Airflow DAG とタスクが他のサービスと通信する際、Airflow IP は、Pod の IP を使用します。この Pod の IP 範囲は、タスクがやり取りする宛先との間でルーティング可能である必要があります。

IP マスカレード エージェントを使用することで、Pod の IP アドレスをノードの IP アドレスに変換できます。これにより、Airflow DAG とタスクをターゲットとする宛先とサービスが、Pod の IP アドレスではなくノード IP アドレスからのパケットのみを受信するようになります。これは、ノードの IP アドレスからのみパケットの受信を想定している環境や、Pod の IP 範囲がクラスタ外でルーティングできない環境で役立ちます。

また、IP マスカレード エージェントを使用して、ネットワーク構成のネットワーク範囲を節約することもできます。たとえば、環境のクラスタ内の Pod には別のネットワーク範囲を使用し、このトラフィックはそのノードの IP アドレス範囲から発信されたかのように見せかけることができます。このようにすると、環境のクラスタ内の Pod に別の範囲の IP アドレスを使用して、IP アドレス空間を 1 つの範囲に節約できます。

例:

  1. VM に 10.0.0.0/8 範囲を使用し、この範囲のみがファイアウォール ルールで許可されます。

  2. ネットワーク範囲を節約するには、環境のクラスタ内の Pod に別の範囲(192.168.0.0/16 など)を使用します。

  3. Pod(Airflow ワーカー)から任意のサービスに接続できるようにするには、IP マスカレードが必要です。IP マスカレードを使わない場合、サービスは 192.168.0.0/16 からトラフィックを受信し、ファイアウォール ルールによりドロップします。IP マスカレード エージェントを有効にして構成すると、サービスは 10.0.0.0/8 からリクエストを受け取り、それが受け入れられます。

始める前に

  • Google Cloud コンソールで IP マスカレード エージェントを有効にすることはできません。

  • この機能を使用するには、GKE 1.22.7 以降のバージョンで環境を作成する必要があります。

  • GKE が 1.22.7 以降のバージョンにアップグレードされた場合でも、以前の GKE バージョンで作成された環境では IP マスカレード エージェントを使用できません。

既存の環境用に IP マスカレード エージェントを有効にする

既存の環境では、IP マスカレード エージェントを有効にできません。

環境を作成するときに IP マスカレード エージェントを有効にする

IP マスカレード エージェントは、環境を作成する際に有効にできます。

Cloud Composer 環境を作成する詳細については、環境の作成をご覧ください。

コンソール

Google Cloud Console で IP マスカレード エージェントを有効にすることはできません。

gcloud

IP マスカレード エージェントは、環境を作成するときに --enable-ip-masq-agent 引数を指定すると有効になります。

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version composer-2.9.2-airflow-2.9.1 \
    --enable-ip-masq-agent

次のように置き換えます。

  • ENVIRONMENT_NAME を環境の名前にする。
  • LOCATION は、環境が配置されているリージョン。

例:

gcloud composer environments create example-environment \
    --location us-central1 \
    --image-version composer-2.9.2-airflow-2.9.1 \
    --enable-ip-masq-agent

API

environments.create API リクエストを作成します。 構成は、Environment リソースで指定します。

{
  "name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
  "config": {
    "softwareConfig": {
      "imageVersion": "composer-2.9.2-airflow-2.9.1"
    },
    "nodeConfig": {
      "enableIpMasqAgent": true
    }
  }
}

以下のように置き換えます。

  • PROJECT_ID は、プロジェクト ID に置き換えます。
  • LOCATION は、環境が配置されているリージョン。
  • ENVIRONMENT_NAME は、環境名に置き換えます。

例:

  // POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments

  {
    "name": "projects/example-project/locations/us-central1/environments/example-environment",
    "config": {
      "softwareConfig": {
        "imageVersion": "composer-2.9.2-airflow-2.9.1"
      },
      "nodeConfig": {
        "enableIpMasqAgent": true
      }
    }
  }

Terraform

環境を作成するときに、node_config ブロックの enable_ip_masq_agent フィールドによって IP マスカレード エージェントを有効にします。

resource "google_composer_environment" "example_environment" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {
    software_config {
      image_version = "composer-2.9.2-airflow-2.9.1"
    }
    node_config {
      enable_ip_masq_agent = true
    }
  }

以下のように置き換えます。

  • ENVIRONMENT_NAME を環境の名前にする。
  • LOCATION は、環境が配置されているリージョン。

例:

resource "google_composer_environment" "example_environment" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  config {
    software_config {
      image_version = "composer-2.9.2-airflow-2.9.1"
    }
    node_config {
      enable_ip_masq_agent = true
    }
  }
}

IP マスカレード エージェントを構成する

Cloud Composer 2 での IP マスカレード エージェントの使用と構成の詳細については、Egress NAT ポリシーを使用して Autopilot クラスタで IP マスカレードを構成するをご覧ください。

次のステップ