Cloud Composer 1 | Cloud Composer 2
このページでは、環境が Cloud Composer 3 の VPC ネットワークにアクセスする方法、環境を VPC ネットワークに接続する手順、以前に構成した接続を無効にする方法について説明します。
環境の Airflow コンポーネントのインターネット アクセスを有効または無効にする場合は、環境のネットワーキング タイプ(プライベートまたはパブリック IP)を変更するをご覧ください。
PyPI パッケージをインストールするときにのみインターネット アクセスを無効または有効にする場合は、PyPI パッケージのインストール時にインターネット アクセスを構成するをご覧ください。
共有 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 ネットワークに接続する
コンソール
Google Cloud Console で [環境] ページに移動します。
環境のリストで、ご利用の環境の名前をクリックします。[環境の詳細] ページが開きます。
[環境の設定] タブに移動します。
[ネットワークの構成] セクションで、[ネットワーク アタッチメント] 項目を見つけて [編集] をクリックします。
[ネットワーク アタッチメント] ダイアログで、次の操作を行います。
新しいネットワーク アタッチメントを作成するには、[ネットワーク アタッチメント] リストで [新しいネットワーク アタッチメントを作成する] を選択します。[ネットワーク] リストと [サブネットワーク] リストで、VPC ネットワークとサブネットワークを選択します。
既存のネットワーク アタッチメントを使用するには、[ネットワーク アタッチメント] リストでアタッチメントを選択します。
[保存] をクリックします。
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 ネットワーク IDSUBNETWORK_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
environments.patch
API リクエストを作成します。このリクエストで次のように操作します。
新しいネットワーク アタッチメントを作成するには:
updateMask
パラメータで、config.node_config.network,config.node_config.subnetwork
マスクを指定します。リクエストの本文の
network
フィールドとsubnetwork
フィールドに、VPC ネットワークとサブネットワークの ID を指定します。
既存のネットワーク アタッチメントを使用するには:
updateMask
パラメータで、config.node_config.composer_network_attachment
マスクを指定します。リクエストの本文で、既存のネットワーク アタッチメントの値を
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 ネットワーク IDSUBNETWORK_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 ネットワークへの接続を無効にする
コンソール
Google Cloud Console で [環境] ページに移動します。
環境のリストで、ご利用の環境の名前をクリックします。[環境の詳細] ページが開きます。
[環境の設定] タブに移動します。
[ネットワークの構成] セクションで、[ネットワーク アタッチメント] 項目を見つけて [編集] をクリックします。
[ネットワーク アタッチメント] ダイアログで [なし] を選択し、[保存] をクリックします。
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
environments.patch
API リクエストを作成します。このリクエストで次のように操作します。
updateMask
パラメータで、config.node_config.network,config.node_config.subnetwork
マスクを指定します。リクエストの本文の
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 などの他のツールを使用してネットワークを切断できます。