環境を VPC ネットワークに接続する

Cloud Composer 1 | Cloud Composer 2

このページでは、環境が Cloud Composer 3 の VPC ネットワークにアクセスする方法、環境を VPC ネットワークに接続する手順、以前に構成した接続を無効にする方法について説明します。

VPC ネットワーク アクセスについて

Cloud Composer 3 では、環境の VPC ネットワークへのアクセスを有効にできます。

環境の VPC ネットワークへのアクセスを有効にする場合:

  • 環境の Airflow コンポーネントは、VPC ネットワーク内のプライベート ネットワーク エンドポイントにアクセスできます。たとえば、DAG コードは、構成された Airflow 接続を介して VPC ネットワーク内のリソースにアクセスできます。

  • 環境でプライベート IP ネットワーキングが使用されている場合、Google Services API へのトラフィックを除くすべての内部トラフィックが VPC ネットワークにルーティングされます

  • VPC ネットワークの構成方法によっては、プライベート IP 環境から VPC ネットワークを介してインターネットにアクセスできます

  • VPC ネットワークのアクセス ステータスに関係なく、Google サービス API へのアクセスは常に可能です。

  • VPC ネットワークで定義された限定公開 DNS ゾーンは、自動的に環境の Airflow コンポーネントで使用できます。

  • この環境では、VPC サブネットワーク内に 2 つの IP アドレスが予約されます。

Cloud Composer は、ネットワーク アタッチメントを使用して環境を VPC ネットワークに接続します。

  • VPC ネットワークとサブネットワークを指定すると、Cloud Composer によってプロジェクトに新しいネットワーク アタッチメントが作成されます。このアタッチメントは、環境の削除、VPC ネットワークへの接続の無効化、VPC 接続パラメータの上書きを行うと削除されます。

  • 既存のネットワーク アタッチメントを指定する場合は、環境と同じプロジェクト内に配置する必要があります。環境の削除、接続の無効化、VPC 接続パラメータの上書きを行った後に、このアタッチメントは削除されません。

  • 共有 VPC ネットワーキングの場合:

    • Cloud Composer の共有 VPC ネットワークが構成されていることを確認します。Cloud Composer のプロジェクトと権限の構成については、共有 VPC の構成をご覧ください。

    • 共有 VPC ネットワーキングを構成したら、ホスト プロジェクトから環境を VPC ネットワークに接続できます。既存のネットワーク アタッチメントを使用する場合は、環境が配置されているサービス プロジェクト内にアタッチメントを作成し、共有 VPC ネットワークに接続する必要があります。

環境の内部 IP 範囲について

Cloud Composer 3 環境では、環境のクラスタや Cloud SQL プロキシなど、テナント プロジェクトで実行されるコンポーネント用に複数の IP アドレスが必要です。これらの IP アドレスは、環境の内部 IP 範囲から取得されます。

  • デフォルトの内部 IP 範囲は 100.64.128.0/20 です。

  • 環境を作成するときに、別の内部 IP 範囲を指定できます。この範囲には、/20 マスクを使用する必要があります。

  • 既存の環境の内部 IP 範囲は変更できません。

内部 IP 範囲は、次のように VPC ネットワークとやり取りします。

  • 内部 IP 範囲は、Cloud Composer 環境が接続されている VPC サブネットワークと競合しないようにしてください。内部 IP 範囲と重複する VPC サブネットワークとの接続を有効にすることはできません。

  • 環境の内部 IP 範囲が VPC ネットワーク範囲と重複する場合、IP アドレスが重複する VPC ネットワークのエンドポイントには環境からアクセスできません

    たとえば、内部範囲が 100.64.128.0/20 の場合、VPC ネットワーク内の 100.64.128.1 エンドポイントへのリクエストはテナント プロジェクトから離れないため、失敗します。

  • 内部 IP 範囲は予約されていません。異なる環境で使用される内部 VPC ネットワークは分離されているため、追加の設定をせずに、同じ内部 IP 範囲を複数の環境で使用できます。

  • 環境内の DAG とタスクがリクエストを行わない限り、内部範囲の IP アドレスは他の目的に使用できます。

VPC ネットワークに接続する

コンソール

  1. Google Cloud Console で [環境] ページに移動します。

    [環境] に移動

  2. 環境のリストで、ご利用の環境の名前をクリックします。[環境の詳細] ページが開きます。

  3. [環境の設定] タブに移動します。

  4. [ネットワークの構成] セクションで、[ネットワーク アタッチメント] 項目を見つけて [編集] をクリックします。

  5. [ネットワーク アタッチメント] ダイアログで、次の操作を行います。

    • 新しいネットワーク アタッチメントを作成するには、[ネットワーク アタッチメント] リストで [新しいネットワーク アタッチメントを作成する] を選択します。[ネットワーク] リストと [サブネットワーク] リストで、VPC ネットワークとサブネットワークを選択します。

    • 既存のネットワーク アタッチメントを使用するには、[ネットワーク アタッチメント] リストでアタッチメントを選択します。

  6. [保存] をクリックします。

gcloud

次の Google Cloud CLI 引数は、VPC ネットワーク接続パラメータを指定します。

  • --network: VPC ネットワーク ID。
  • --subnetwork: VPC サブネットワーク ID。
  • --network-attachment: 代わりに既存のネットワーク アタッチメントを使用します。

新しいネットワーク アタッチメント

新しいネットワーク アタッチメントを介して環境を VPC ネットワークに接続するには、次の Google Cloud CLI コマンドを実行します。

gcloud beta composer environments update ENVIRONMENT_NAME \
  --location LOCATION \
  --network NETWORK_ID \
  --subnetwork SUBNETWORK_ID

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

  • ENVIRONMENT_NAME: 環境の名前。
  • LOCATION: 環境が配置されているリージョン
  • NETWORK_ID: VPC ネットワーク ID
  • SUBNETWORK_ID: VPC サブネットワーク ID

例:

gcloud beta composer environments update example-environment \
  --location us-central1 \
  --network projects/example-project/global/networks/example-network \
  --subnetwork projects/example-project/regions/us-central1/subnetworks/example-subnetwork

既存のネットワーク アタッチメント

新しいネットワーク アタッチメントを介して環境を VPC ネットワークに接続するには、次の Google Cloud CLI コマンドを実行します。

gcloud beta composer environments update ENVIRONMENT_NAME \
  --location LOCATION \
  --network-attachment NETWORK_ATTACHMENT_ID

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

  • ENVIRONMENT_NAME: 環境の名前。
  • LOCATION: 環境が配置されているリージョン
  • NETWORK_ATTACHMENT_ID: projects/{project}/regions/{region}/networkAttachments/{networkAttachment} 形式のネットワーク アタッチメント。

例:

gcloud beta composer environments update example-environment \
  --location us-central1 \
  --network-attachment projects/example-project/regions/us-central1/networkAttachments/example-network-attachment

API

  1. environments.patch API リクエストを作成します。

  2. このリクエストで次のように操作します。

    • 新しいネットワーク アタッチメントを作成するには:

      1. updateMask パラメータで、config.node_config.network,config.node_config.subnetwork マスクを指定します。

      2. リクエストの本文の network フィールドと subnetwork フィールドに、VPC ネットワークとサブネットワークの ID を指定します。

    • 既存のネットワーク アタッチメントを使用するには:

      1. updateMask パラメータで、config.node_config.composer_network_attachment マスクを指定します。

      2. リクエストの本文で、既存のネットワーク アタッチメントの値を projects/{project}/regions/{region}/networkAttachments/{networkAttachment} 形式で指定します。

例(新しいネットワーク アタッチメント):

// PATCH https://composer.googleapis.com/v1beta1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.node_config.network,config.node_config.subnetwork

"config": {
  "nodeConfig": {
    "network": "projects/example-project/global/networks/example-network",
    "subnetwork": "projects/example-project/regions/us-central1/subnetworks/example-subnetwork"
  }
}

例(既存のネットワーク アタッチメント):

// PATCH https://composer.googleapis.com/v1beta1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.node_config.composer_network_attachment

"config": {
  "nodeConfig": {
    "composerNetworkAttachment": "projects/example-project/regions/us-central1/networkAttachments/example-network-attachment"
  }
}

Terraform

node_config ブロックの次のフィールドでは、VPC ネットワーク接続パラメータを指定します。

  • network: VPC ネットワーク ID。
  • subnetwork: VPC サブネットワーク ID。
  • composer_network_attachment: 代わりに既存のネットワーク アタッチメントを使用します。

新しいネットワーク アタッチメント

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

  config {

    node_config {
      network = NETWORK_ID
      subnetwork = SUBNETWORK_ID
    }

  }
}

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

  • ENVIRONMENT_NAME: 環境の名前。
  • LOCATION: 環境が配置されているリージョン。
  • NETWORK_ID: VPC ネットワーク ID
  • SUBNETWORK_ID: VPC サブネットワーク ID

例(新しいネットワーク アタッチメント):

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

  config {

    node_config {
      network = "projects/example-project/global/networks/example-network"
      subnetwork = "projects/example-project/regions/us-central1/subnetworks/example-subnetwork"
    }

    ... other configuration parameters
  }
}

既存のネットワーク アタッチメント

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

  config {

    node_config {
      composer_network_attachment = NETWORK_ATTACHMENT_ID
    }

  }
}

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

  • ENVIRONMENT_NAME: 環境の名前。
  • LOCATION: 環境が配置されているリージョン。
  • NETWORK_ATTACHMENT_ID: ネットワーク アタッチメント ID。

例(既存のネットワーク アタッチメント):

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

  config {

    node_config {
      composer_network_attachment = projects/example-project/regions/us-central1/networkAttachments/example-network-attachment
    }

    ... other configuration parameters
  }
}

VPC ネットワークへの接続を無効にする

コンソール

  1. Google Cloud Console で [環境] ページに移動します。

    [環境] に移動

  2. 環境のリストで、ご利用の環境の名前をクリックします。[環境の詳細] ページが開きます。

  3. [環境の設定] タブに移動します。

  4. [ネットワークの構成] セクションで、[ネットワーク アタッチメント] 項目を見つけて [編集] をクリックします。

  5. [ネットワーク アタッチメント] ダイアログで [なし] を選択し、[保存] をクリックします。

gcloud

--disable-vpc-connectivity 引数を指定すると、環境の VPC ネットワーク接続が無効になります。

gcloud beta composer environments update ENVIRONMENT_NAME \
  --location LOCATION \
  --disable-vpc-connectivity

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

  • ENVIRONMENT_NAME: 環境の名前。
  • LOCATION: 環境が配置されているリージョン

例:

gcloud beta composer environments update example-environment \
  --location us-central1 \
  --disable-vpc-connectivity

API

  1. environments.patch API リクエストを作成します。

  2. このリクエストで次のように操作します。

    1. updateMask パラメータで、config.node_config.network,config.node_config.subnetwork マスクを指定します。

    2. リクエストの本文の network フィールドと subnetwork フィールドに、空の値を指定します。

例:

// PATCH https://composer.googleapis.com/v1beta1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.node_config.network,config.node_config.subnetwork

"config": {
  "nodeConfig": {
    "network": "",
    "subnetwork": ""
  }
}

Terraform

Terraform を使用して VPC ネットワークを接続解除することはできません。代わりに、別の VPC ネットワークを代わりに接続するか、Google Cloud CLI などの他のツールを使用してネットワークを切断できます。

次のステップ