Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3
このページでは、環境が Cloud Composer 3 の VPC ネットワークにアクセスする方法、環境を VPC ネットワークに接続する手順、以前に構成した接続を無効にする方法について説明します。
環境の Airflow コンポーネントのインターネット アクセスを有効または無効にする場合は、環境のネットワーキング タイプ(プライベート IP またはパブリック IP)を変更するをご覧ください。
PyPI パッケージのインストール時にのみインターネット アクセスを無効または有効にする場合は、PyPI パッケージのインストール時にインターネット アクセスを構成するをご覧ください。
共有 VPC ネットワーキングを構成する場合は、プロジェクトと権限の構成について 共有 VPC の構成をご覧ください。
VPC ネットワーク アクセスについて
Cloud Composer 3 では、環境の VPC ネットワークへのアクセスを有効にできます。
環境の VPC ネットワークへのアクセスを有効にした場合:
環境の Airflow コンポーネントは、VPC ネットワーク内のプライベート ネットワーク エンドポイントにアクセスできます。たとえば、DAG コードは、構成された Airflow 接続を介して VPC ネットワーク内にあるリソースにアクセスできます。
環境でプライベート IP ネットワーキングを使用している場合、限定公開の Google アクセスを介してプライベート IP 環境で使用できる Google API、サービス、ドメインへのトラフィックを除き、すべての内部トラフィックが VPC ネットワークにルーティングされます。
VPC ネットワークの構成方法によっては、プライベート IP 環境が VPC ネットワーク経由でインターネットにアクセスできる場合があります。
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 Proxy など、テナント プロジェクトで実行されるコンポーネントに複数の 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 範囲を使用できます。
内部範囲の IP アドレスは、環境内の DAG とタスクがリクエストを行わない限り他の目的に使用できます。
VPC ネットワークに接続する
コンソール
Google Cloud コンソールで [環境] ページに移動します。
環境のリストで、ご利用の環境の名前をクリックします。[環境の詳細] ページが開きます。
[環境の設定] タブに移動します。
[ネットワークの構成] セクションで、[ネットワーク アタッチメント] 項目を見つけて [編集] をクリックします。
[ネットワーク アタッチメント] ダイアログで、次の操作を行います。
新しいネットワーク アタッチメントを作成するには、[ネットワーク アタッチメント] リストで [新しいネットワーク アタッチメントを作成] を選択します。[ネットワーク] リストと [サブネットワーク] リストで、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 とサブネットワーク 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
}
}
既存のネットワーク アタッチメント
その結果、環境でアタッチメントが使用されなくなります。この問題に対処するには、Terraform がアタッチメントの producer_accept_lists
パラメータの変更を無視するようにします。
resource "google_compute_network_attachment" "NETWORK_ATTACHMENT_ID" {
lifecycle {
ignore_changes = [producer_accept_lists]
}
# ... other configuration parameters
}
その後、環境にこのアタッチメントを指定します。Terraform で管理されていないアタッチメントを指定することもできます。例をご覧ください。
resource "google_composer_environment" "example" {
name = "example-environment"
region = "us-central1"
config {
node_config {
composer_network_attachment = google_compute_network_attachment.NETWORK_ATTACHMENT_ID.id
}
# ... other configuration parameters
}
}
次のように置き換えます。
ENVIRONMENT_NAME
: 環境の名前。LOCATION
: 環境が配置されているリージョン。NETWORK_ATTACHMENT_ID
: ネットワーク アタッチメント ID。
例(既存のネットワーク アタッチメント):
resource "google_compute_network_attachment" "example" {
lifecycle {
ignore_changes = [producer_accept_lists]
}
# ... other configuration parameters
}
resource "google_composer_environment" "example" {
provider = google-beta
name = "example-environment"
region = "us-central1"
config {
node_config {
# Attachment is managed in Terraform:
composer_network_attachment = google_compute_network_attachment.NETWORK_ATTACHMENT_ID.id
# Attachment is not managed in Terraform:
# composer_network_attachment = projects/example-project/regions/us-central1/networkAttachments/example-network-attachment
}
# ... other configuration parameters
}
}
VPC ネットワークへの接続を無効にする
コンソール
Google Cloud コンソールで [環境] ページに移動します。
環境のリストで、ご利用の環境の名前をクリックします。[環境の詳細] ページが開きます。
[環境の設定] タブに移動します。
[ネットワークの構成] セクションで、[ネットワーク アタッチメント] 項目を見つけて [編集] をクリックします。
[ネットワーク アタッチメント] ダイアログで [なし] を選択し、[保存] をクリックします。
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 などの他のツールを使用してネットワークを切断できます。