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

Cloud Composer 1 | Cloud Composer 2

このページでは、環境で 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 マスカレード エージェントを有効にすることはできません。

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

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

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

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

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

Console

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

gcloud

IP マスカレード エージェントは、環境を作成するときに --enable-ip-masq-agent 引数を指定すると有効になります。 また、--enable-ip-alias 引数を使用して IP エイリアスを有効にする必要もあります。

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version composer-1.20.12-airflow-1.10.15 \
    --enable-ip-alias \
    --enable-ip-masq-agent

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

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

例:

gcloud composer environments create example-environment \
    --location us-central1 \
    --image-version composer-1.20.12-airflow-1.10.15 \
    --enable-ip-alias \
    --enable-ip-masq-agent

API

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

{
  "name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
  "config": {
    "softwareConfig": {
      "imageVersion": "composer-1.20.12-airflow-1.10.15"
    },
    "nodeConfig": {
      "ipAllocationPolicy": {
        "useIpAliases": true,
      },
      "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-1.20.12-airflow-1.10.15"
      },
      "nodeConfig": {
        "ipAllocationPolicy": {
          "useIpAliases": true,
        },
        "enableIpMasqAgent": true
      }
    }
  }

Terraform

環境を作成するときに、node_config ブロックの enable_ip_masq_agent フィールドによって IP マスカレード エージェントを有効にします。また、ip_allocation_policy ブロックの use_ip_aliases フィールドで IP エイリアスを有効にする必要もあります。

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

  config {
    software_config {
      image_version = "composer-1.20.12-airflow-1.10.15"
    }
    node_config {
      ip_allocation_policy = [{
        use_ip_aliases = true
        // Other networking configuration
      }]
      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-1.20.12-airflow-1.10.15"
    }
    node_config {
      ip_allocation_policy = [{
        use_ip_aliases = true
        // Other networking configuration
      }]
      enable_ip_masq_agent = true
    }
  }
}

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

Cloud Composer 1 での IP マスカレード エージェントの使用と構成の詳細については、標準クラスタでの IP マスカレード エージェントの構成をご覧ください。

次のステップ