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 つの範囲に節約できます。
例:
VM に
10.0.0.0/8
範囲を使用し、この範囲のみがファイアウォール ルールで許可されます。ネットワーク範囲を節約するには、環境のクラスタ内の Pod に別の範囲(
192.168.0.0/16
など)を使用します。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 マスカレード エージェントの構成をご覧ください。