Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
このページでは、Cloud Composer 環境を作成する方法について説明します。
- 環境について詳しくは、環境のアーキテクチャをご覧ください。
- Terraform を使用した環境の作成について詳しくは、環境の作成(Terraform)をご覧ください。
始める前に
Cloud Composer API を有効にします。Cloud Composer で使用されるサービスの全一覧については、Cloud Composer に必要なサービスをご覧ください。
環境の作成に要する時間は約 25 分です。
Terraform で環境を作成する場合は、Terraform で使用されるサービス アカウントに
composer.environments.create権限が有効になっているロールが割り当てられている必要があります。Terraform のサービス アカウントの詳細については、Google プロバイダの構成リファレンスをご覧ください。
Terraform を使用した Cloud Composer 環境の作成について詳しくは、Terraform のドキュメントをご覧ください。
他のパラメータの詳細については、Terraform 引数リファレンスをご覧ください。
プライベート IP: プライベート IP 環境を作成するための特定のネットワーク要件とピアリング要件が存在します。詳細については、プライベート IP の構成をご覧ください。
共有 VPC: Cloud Composer で共有 VPC を使用するための特定のネットワーク要件が存在します。詳細については、共有 VPC の構成をご覧ください。
VPC SC: セキュリティ境界内に Cloud Composer 環境をデプロイするには、VPC SC の構成をご覧ください。Cloud Composer で使用する場合、VPC Service Controls には既知の制限事項がいくつかあります。
ステップ 1. 環境のサービス アカウントを作成または選択する
環境を作成するときに、サービス アカウントを指定します。このサービス アカウントは、環境のサービス アカウントと呼ばれます。環境でこのサービス アカウントを使用して、ほとんどのオペレーションを実行します。
ご使用の環境のサービス アカウントはユーザー アカウントではありません。サービス アカウントは、ユーザーではなく、アプリケーションや仮想マシン(VM)インスタンスで使用される特別なアカウントです。
ご使用の環境のサービス アカウントは後で変更できません。
プロジェクトに Cloud Composer 環境のサービス アカウントがまだない場合は、作成します。
Terraform で環境のサービス アカウントを作成する例については、環境の作成(Terraform)をご覧ください。
環境用に新しいサービス アカウントを作成するには:
Identity and Access Management のドキュメントの説明に沿って、新しいサービス アカウントを作成します。
Identity and Access Management のドキュメントに記載されているとおりに、ロールを付与します。必要なロールは Composer ワーカー(
composer.worker)です。お使いの環境でリソース ロケーションの制限を使用している場合、または Artifact Registry リポジトリまたは限定公開リポジトリから PyPI パッケージをインストールする場合は、環境を自身で実行するユーザー管理のサービス アカウントにサービス アカウント ユーザー(
iam.serviceAccountUser)ロールを付与します(プリンシパルとリソースの両方が同じサービス アカウントです)。Google Cloud プロジェクト内の他のリソースにアクセスするには、このサービスアカウントにこれらのリソースにアクセスするための追加の権限を付与します。ほとんどの場合、Composer ワーカー(
composer.worker)ロールには、この必要な権限セットが含まれています。DAG の運用に必要な場合のみ、このサービス アカウントに追加の権限を追加してください。
ステップ 2. 基本設定
この手順では、指定したロケーションにデフォルト パラメータを持つ Cloud Composer 環境を作成します。
コンソール
Google Cloud コンソールで、[環境の作成] ページに移動します。
[名前] フィールドに、環境の名前を入力します。
名前は、は先頭を小文字にし、その後を最大 62 文字の小文字、数字、ハイフンで構成する必要があります。末尾をハイフンにすることはできません。環境名は環境のサブコンポーネントの作成に使用されるため、Cloud Storage バケット名としても有効な名前を指定する必要があります。制限事項の一覧については、バケットの命名ガイドラインをご覧ください。
[ロケーション] プルダウン リストで、環境のロケーションを選択します。
ロケーションは、環境が配置されているリージョンです。
[イメージのバージョン] プルダウン リストで、必要なバージョンの Airflow を含む Cloud Composer イメージを選択します。
[ノードの構成] セクションの [サービス アカウント] プルダウン リストで、お使いの環境のサービス アカウントを選択します。
環境のサービス アカウントがまだない場合は、環境のサービス アカウントを作成または選択するをご覧ください。
gcloud
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version IMAGE_VERSION \
--service-account "SERVICE_ACCOUNT"
以下のように置き換えます。
ENVIRONMENT_NAMEを環境の名前にする。名前は、は先頭を小文字にし、その後を最大 62 文字の小文字、数字、ハイフンで構成する必要があります。末尾をハイフンにすることはできません。環境名は環境のサブコンポーネントの作成に使用されるため、Cloud Storage バケット名としても有効な名前を指定する必要があります。制限事項の一覧については、バケットの命名ガイドラインをご覧ください。
LOCATIONは、環境のリージョンに置き換えます。ロケーションは、環境が配置されているリージョンです。
SERVICE_ACCOUNTは、環境のサービス アカウントに置き換えます。IMAGE_VERSIONは、Cloud Composer イメージの名前に置き換えます。
例:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-1.20.12-airflow-1.10.15 \
--service-account "
example-account@example-project.iam.gserviceaccount.com
"
API
environments.create API リクエストを作成します。構成は、Environment リソースで指定します。
{
"name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
"config": {
"softwareConfig": {
"imageVersion": "IMAGE_VERSION"
},
"nodeConfig": {
"serviceAccount": "SERVICE_ACCOUNT"
}
}
}
以下のように置き換えます。
PROJECT_IDは、プロジェクト ID に置き換えます。LOCATIONは、環境のリージョンに置き換えます。ロケーションは、環境が配置されているリージョンです。
ENVIRONMENT_NAMEは、環境名に置き換えます。名前は、は先頭を小文字にし、その後を最大 62 文字の小文字、数字、ハイフンで構成する必要があります。末尾をハイフンにすることはできません。環境名は環境のサブコンポーネントの作成に使用されるため、Cloud Storage バケット名としても有効な名前を指定する必要があります。制限事項の一覧については、バケットの命名ガイドラインをご覧ください。
IMAGE_VERSIONは、Cloud Composer イメージの名前に置き換えます。SERVICE_ACCOUNTは、環境のサービス アカウントに置き換えます。
例:
// 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": {
"serviceAccount": "
example-account@example-project.iam.gserviceaccount.com
"
}
}
}
Terraform
デフォルトのパラメータを使用して環境を作成するには、指定された場所で Terraform 構成に次のリソース ブロックを追加して terraform apply を実行します。
resource "google_composer_environment" "example" {
provider = google-beta
name = "ENVIRONMENT_NAME"
region = "LOCATION"
config {
software_config {
image_version = "IMAGE_VERSION"
}
node_config {
service_account = "SERVICE_ACCOUNT"
}
}
}
以下のように置き換えます。
ENVIRONMENT_NAMEを環境の名前にする。名前は、は先頭を小文字にし、その後を最大 62 文字の小文字、数字、ハイフンで構成する必要があります。末尾をハイフンにすることはできません。環境名は環境のサブコンポーネントの作成に使用されるため、Cloud Storage バケット名としても有効な名前を指定する必要があります。制限事項の一覧については、バケットの命名ガイドラインをご覧ください。
LOCATIONは、環境のリージョンに置き換えます。ロケーションは、環境が配置されているリージョンです。
IMAGE_VERSIONは、Cloud Composer イメージの名前に置き換えます。SERVICE_ACCOUNTは、環境のサービス アカウントに置き換えます。
例:
resource "google_composer_environment" "example" {
provider = google-beta
name = "example-environment"
region = "us-central1"
config {
software_config {
image_version = "composer-1.20.12-airflow-1.10.15"
}
node_config {
service_account = "
example-account@example-project.iam.gserviceaccount.com
"
}
}
}
ステップ 3. (省略可)環境のスケーリングとパフォーマンスのパラメータを構成する
環境のスケールとパフォーマンスの構成を指定するには、環境の GKE クラスタ内のノード数を指定し、環境コンポーネントのマシンタイプを選択します。
コンソール
[環境の作成] ページで次の操作を行います。
[Node configuration] セクションで、次のようにします。
[ノード数] を入力します。
ノード数とは、環境のクラスタ内の Google Kubernetes Engine ノードの数です。デフォルトでは、環境には 3 つのノードがあります。
この値は、環境の作成後に変更できます。
ノードの [マシンタイプ] を選択します。
ノードのマシンタイプは、クラスタ インスタンスに使用する Compute Engine のマシンタイプです。このパラメータによって、環境の CPU 数とメモリ容量が決定されます。デフォルトのマシンタイプは
n1-standard-1です。環境を作成した後にこの値を変更するには、環境クラスタを手動で再構成する必要があります。
[ディスクサイズ] を入力します。
環境ノードのディスクサイズ(GB)。環境内の各ノードがこのディスク容量を持ちます。環境 VM と同期されているフォルダに大量のデータを保存することが想定される場合は、さらに大きなディスクサイズを選択します。たとえば、環境のバケットの
/dataフォルダなどがそれに該当します。最小サイズは 30 GB です。デフォルトのサイズは 100 GB です。このパラメータは、環境の作成後に変更できません。
[スケジューラの数] を選択します。
ご利用の環境では、同時に複数の Airflow スケジューラを実行できます。複数のスケジューラを使用して複数のスケジューラ インスタンス間で負荷を分散すると、パフォーマンスと信頼性が向上します。
スケジューラの数を増やしても、Airflow のパフォーマンスが常に改善されるとは限りません。たとえば、スケジューラが 1 つだけでも、2 つの場合よりも良いパフォーマンスの場合があります。これは、追加のスケジューラが使用されないため、全体的なパフォーマンスに寄与せずに環境のリソースを消費した場合に発生する可能性があります。実際のスケジューラのパフォーマンスは、Airflow ワーカーの数、環境内で実行される DAG とタスクの数、Airflow と環境の両方の構成によって異なります。
2 つのスケジューラを設定した状態で開始し、環境のパフォーマンスをモニタリングすることをおすすめします。スケジューラの数を変更する場合は、いつでも環境を元のスケジューラ数にスケールダウンできます。
複数のスケジューラの構成の詳細については、Airflow のドキュメントをご覧ください。
[ネットワーキング、Airflow 構成のオーバーライド、その他の機能] 項目を展開します。
[Cloud SQL 構成] セクションで、[Cloud SQL マシンタイプ] を選択します。
このパラメータにより、Airflow データベースを実行する Cloud SQL インスタンスのマシンタイプが決まります。Cloud SQL のデフォルトのマシンタイプは
db-n1-standard-2です。[ウェブサーバーの構成] セクションで、[ウェブサーバーのマシンタイプ] を選択します。
このパラメータにより、Airflow ウェブサーバーを実行する Compute Engine インスタンスのマシンタイプが決定されます。
デフォルトのウェブサーバーのマシンタイプは、
composer-n1-webserver-2です。
gcloud
環境のスケールとパフォーマンスのパラメータは、環境を作成するときに、次の引数で制御します。
--node-countは環境内のノード数を指定します。ノード数とは、環境のクラスタ内の Google Kubernetes Engine ノードの数です。デフォルトでは、環境には 3 つのノードがあります。
この値は、環境の作成後に変更できます。
--scheduler-countは、環境内のスケジューラの数を指定します。ご利用の環境では、同時に複数の Airflow スケジューラを実行できます。複数のスケジューラを使用して複数のスケジューラ インスタンス間で負荷を分散すると、パフォーマンスと信頼性が向上します。
スケジューラの数を増やしても、Airflow のパフォーマンスが常に改善されるとは限りません。たとえば、スケジューラが 1 つだけでも、2 つの場合よりも良いパフォーマンスの場合があります。これは、追加のスケジューラが使用されないため、全体的なパフォーマンスに寄与せずに環境のリソースを消費した場合に発生する可能性があります。実際のスケジューラのパフォーマンスは、Airflow ワーカーの数、環境内で実行される DAG とタスクの数、Airflow と環境の両方の構成によって異なります。
2 つのスケジューラを設定した状態で開始し、環境のパフォーマンスをモニタリングすることをおすすめします。スケジューラの数を変更する場合は、いつでも環境を元のスケジューラ数にスケールダウンできます。
複数のスケジューラの構成の詳細については、Airflow のドキュメントをご覧ください。
--disk-sizeは、環境の VM のディスクサイズを指定します。環境ノードのディスクサイズ(GB)。環境内の各ノードがこのディスク容量を持ちます。環境 VM と同期されているフォルダに大量のデータを保存することが想定される場合は、さらに大きなディスクサイズを選択します。たとえば、環境のバケットの
/dataフォルダなどがそれに該当します。最小サイズは 30 GB です。デフォルトのサイズは 100 GB です。このパラメータは、環境の作成後に変更できません。
--machine-typeは、ノード VM のマシンタイプを指定します。ノードのマシンタイプは、クラスタ インスタンスに使用する Compute Engine のマシンタイプです。このパラメータによって、環境の CPU 数とメモリ容量が決定されます。デフォルトのマシンタイプは
n1-standard-1です。環境を作成した後にこの値を変更するには、環境クラスタを手動で再構成する必要があります。
--cloud-sql-machine-typeは、Cloud SQL インスタンスのマシンタイプを指定します。このパラメータにより、Airflow データベースを実行する Cloud SQL インスタンスのマシンタイプが決まります。Cloud SQL のデフォルトのマシンタイプは
db-n1-standard-2です。--web-server-machine-typeは、Airflow ウェブサーバー インスタンスのマシンタイプを指定します。このパラメータにより、Airflow ウェブサーバーを実行する Compute Engine インスタンスのマシンタイプが決定されます。
デフォルトのウェブサーバーのマシンタイプは、
composer-n1-webserver-2です。
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-1.20.12-airflow-1.10.15 \
--service-account "SERVICE_ACCOUNT" \
--zone NODE_ZONE \
--node-count NODE_COUNT \
--scheduler-count SCHEDULER_COUNT \
--disk-size DISK_SIZE \
--machine-type NODE_MACHINE_TYPE \
--cloud-sql-machine-type SQL_MACHINE_TYPE \
--web-server-machine-type WS_MACHINE_TYPE
以下のように置き換えます。
NODE_COUNTは、ノード数に置き換えます。NODE_ZONEは、環境の VM の Compute Engine ゾーンに置き換えます。SCHEDULER_COUNTは、スケジューラの数に置き換えます。DISK_SIZEは、環境の VM のディスクサイズ(GB)に置き換えます。NODE_MACHINE_TYPEは、ノード VM のマシンタイプに置き換えます。SQL_MACHINE_TYPEは、Cloud SQL インスタンスのマシンタイプに置き換えます。WS_MACHINE_TYPEは、Airflow ウェブサーバー インスタンスのマシンタイプに置き換えます。
例:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-1.20.12-airflow-1.10.15 \
--service-account "
example-account@example-project.iam.gserviceaccount.com
" \
--zone us-central1-a \
--node-count 6 \
--scheduler-count 1 \
--disk-size 50 \
--machine-type n1-standard-2 \
--cloud-sql-machine-type db-n1-standard-2 \
--web-server-machine-type composer-n1-webserver-2
API
環境を作成するときに、[Environment] > [EnvironmentConfig] リソースで環境のスケールとパフォーマンスのパラメータを指定します。
{
"name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
"config": {
"nodeCount": NODE_COUNT,
"nodeConfig": {
"machineType": "NODE_MACHINE_TYPE",
"diskSizeGb": DISK_SIZE,
"serviceAccount": "SERVICE_ACCOUNT"
},
"softwareConfig": {
"schedulerCount": SCHEDULER_COUNT
},
"databaseConfig": {
"machineType": "SQL_MACHINE_TYPE"
},
"webServerConfig": {
"machineType": "WS_MACHINE_TYPE"
}
}
}
以下のように置き換えます。
NODE_COUNTは、ノード数に置き換えます。DISK_SIZEは、環境の VM のディスクサイズ(GB)に置き換えます。NODE_MACHINE_TYPEは、ノード VM のマシンタイプに置き換えます。この値には、環境の VM のゾーンが含まれている必要があります。SCHEDULER_COUNTは、スケジューラの数に置き換えます。SQL_MACHINE_TYPEは、Cloud SQL インスタンスのマシンタイプに置き換えます。WS_MACHINE_TYPEは、Airflow ウェブサーバー インスタンスのマシンタイプに置き換えます。
例:
// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments
{
"name": "projects/example-project/locations/us-central1/environments/example-environment",
"config": {
"nodeCount": 6,
"nodeConfig": {
"machineType": "projects/example-project/zones/us-central1-a/machineTypes/n1-standard-2",
"diskSizeGb": 50,
"serviceAccount": "
example-account@example-project.iam.gserviceaccount.com
"
},
"softwareConfig": {
"schedulerCount": 1
},
"databaseConfig": {
"machineType": "db-n1-standard-2"
},
"webServerConfig": {
"machineType": "composer-n1-webserver-2"
}
}
}
Terraform
環境のスケールとパフォーマンス パラメータは、環境を作成するときに、次のフィールドで制御します。
node_configブロックのnode_countは、環境内のノードの数を指定します。ノード数とは、環境のクラスタ内の Google Kubernetes Engine ノードの数です。デフォルトでは、環境には 3 つのノードがあります。
この値は、環境の作成後に変更できます。
node_configブロックのdisk_size_gbで、環境の VM のディスクサイズを指定します。環境ノードのディスクサイズ(GB)。環境内の各ノードがこのディスク容量を持ちます。環境 VM と同期されているフォルダに大量のデータを保存することが想定される場合は、さらに大きなディスクサイズを選択します。たとえば、環境のバケットの
/dataフォルダなどがそれに該当します。最小サイズは 30 GB です。デフォルトのサイズは 100 GB です。このパラメータは、環境の作成後に変更できません。
node_configブロックのmachine_typeは、ノード VM のマシンタイプを指定します。このフィールドを指定する際には、zoneフィールドに環境 VM の Compute Engine ゾーンも指定します。ノードのマシンタイプは、クラスタ インスタンスに使用する Compute Engine のマシンタイプです。このパラメータによって、環境の CPU 数とメモリ容量が決定されます。デフォルトのマシンタイプは
n1-standard-1です。環境を作成した後にこの値を変更するには、環境クラスタを手動で再構成する必要があります。
database_configブロックのmachine_typeは、Cloud SQL インスタンスのマシンタイプを指定します。このパラメータにより、Airflow データベースを実行する Cloud SQL インスタンスのマシンタイプが決まります。Cloud SQL のデフォルトのマシンタイプは
db-n1-standard-2です。web_server_configブロックのmachine_typeは、Airflow ウェブサーバー インスタンスのマシンタイプを指定します。このパラメータにより、Airflow ウェブサーバーを実行する Compute Engine インスタンスのマシンタイプが決定されます。
デフォルトのウェブサーバーのマシンタイプは、
composer-n1-webserver-2です。software_configブロックのscheduler_countフィールドは、環境内のスケジューラの数を指定します。ご使用の環境では Airflow 2 を使用する必要があります。
resource "google_composer_environment" "example" {
name = "ENVIRONMENT_NAME"
region = "LOCATION"
config {
node_config {
node_count = NODE_COUNT
disk_size_gb = DISK_SIZE
machine_type = "NODE_MACHINE_TYPE"
zone = "NODE_ZONE"
service_account = "SERVICE_ACCOUNT"
}
software_config {
scheduler_count = SCHEDULER_COUNT
}
database_config {
machine_type = "SQL_MACHINE_TYPE"
}
web_server_config {
machine_type = "WS_MACHINE_TYPE"
}
}
}
以下のように置き換えます。
NODE_COUNTは、ノード数に置き換えます。DISK_SIZEは、環境の VM のディスクサイズ(GB)に置き換えます。NODE_MACHINE_TYPEは、ノード VM のマシンタイプに置き換えます。NODE_ZONEは、環境の VM の Compute Engine ゾーンに置き換えます。SCHEDULER_COUNTは、スケジューラの数に置き換えます。SQL_MACHINE_TYPEは、Cloud SQL インスタンスのマシンタイプに置き換えます。WS_MACHINE_TYPEは、Airflow ウェブサーバー インスタンスのマシンタイプに置き換えます。
例:
resource "google_composer_environment" "example" {
name = "example-environment"
region = "us-central1"
config {
node_config {
node_count = 4
disk_size_gb = 100
zone = "us-central1-a"
machine_type = "n1-standard-2"
service_account = "
example-account@example-project.iam.gserviceaccount.com
"
}
software_config {
scheduler_count = 2
}
database_config {
machine_type = "db-n1-standard-2"
}
web_server_config {
machine_type = "composer-n1-webserver-2"
}
}
}
ステップ 4. (省略可)環境のネットワーキングを構成する
ネットワーキング パラメータは、作成する環境の種類によって異なります。
パブリック IP 環境。デフォルトのネットワーク パラメータを使用します。
プライベート IP 環境(VPC ピアリング)。この構成では、環境で VPC ピアリングを使用して接続を行います。
プライベート IP 環境を構成します。
- プロジェクトのネットワークをプライベート IP 環境用に構成する。
- このセクションで詳細に説明するように、プライベート IP 環境用のその他のパラメータを指定します。
VPC ピアリングを使用するプライベート IP 環境の場合、次のことを確認する必要があります。
- VPC ネットワーク ID
- VPC サブネットワーク ID
VPC サブネットワーク内の 2 つのセカンダリ IP 範囲:
- Pod のセカンダリ IP 範囲
- Service のセカンダリ IP 範囲
環境のコンポーネント用の IP 範囲:
- GKE コントロール プレーン用の IP 範囲。
- ウェブサーバーの IP 範囲
- Cloud SQL インスタンス用の IP 範囲。
共有 VPC 環境の場合は、ホスト プロジェクトに対して追加のネットワークを設定してから、サービス プロジェクトにパブリック IP 環境またはプライベート IP 環境を作成する必要があります。共有 VPC の構成ページの手順に沿って行います。
共有 VPC 環境の場合は、次のことを確認する必要があります。
- ホスト プロジェクトの VPC ネットワーク ID
ホスト プロジェクトの VPC サブネットワーク ID
ホスト プロジェクトの VPC サブネットワーク内の 2 つのセカンダリ IP 範囲:
- Pod のセカンダリ IP 範囲
- Service のセカンダリ IP 範囲
パブリック IP 共有 VPC 環境を作成する場合は、引き続き Pod とサービスのホスト プロジェクトの VPC ネットワーク、サブネットワーク、セカンダリ IP 範囲を指定する必要があります。
VPC SC 環境を作成するにはサービス境界を作成してから、境界内に環境を作成する必要があります。VPC Service Controls の構成に概要を記載している手順に沿って操作してください。
環境に対する追加のネットワーキング オプションは、次のとおりです。
- プライベートで利用されるパブリック IP アドレス。より多くの IP アドレスを使用する場合、環境では、Pod と Service の内部サブネット IP アドレス範囲として、特定のパブリック IP アドレス範囲をプライベートで使用できます。
- 承認済みネットワーク。HTTPS を使用してプライベート IP 環境のコントロール プレーンにアクセスする場合は、使用可能な承認済みネットワークによって CIDR 範囲を指定します。
- IP マスカレード エージェント。IP マスカレード エージェントで環境を使用することにより、環境のネットワーキング構成で多対一の IP アドレス変換を使用できます。IP マスカレード エージェントを使用した環境の作成に関する詳細は、IP マスカレード エージェントを有効にするをご覧ください。
コンソール
プライベート IP 環境を作成するには、次のようにします。
ネットワーキングは、作成する環境の種類に応じて構成する必要があります。
[ネットワーキング、Airflow 構成のオーバーライド、その他の機能] 項目を展開します。
[ネットワークの構成] セクションで、[VPC ネイティブの有効化(エイリアス IP を使用)] チェックボックスをオンにします。
[ネットワーク] プルダウン リストで、VPC ネットワーク ID を選択します。
[サブネットワーク] プルダウン リストで、VPC サブネットワーク ID を選択します。
[Pod IP アドレスの割り振り] セクションで、Pod のセカンダリ IP 範囲を指定します。VPC ネットワーク内の既存のセカンダリ範囲を使用するか、CIDR 表記に新しい範囲を指定できます。
[サービス IP アドレスの割り振り] セクションで、サービスのセカンダリ IP 範囲を指定します。VPC ネットワーク内の既存のセカンダリ範囲を使用するか、CIDR 表記に新しい範囲を指定できます。
[プライベート IP] セクションで、[プライベート IP を有効にする] チェックボックスをオンにします。
[GKE クラスタ マスターのプライベート IP] セクションで、GKE コントロール プレーンの IP 範囲を指定します。
環境が配置されているリージョンにデフォルトの IP 範囲を使用するには、[デフォルトの IP 範囲] を選択します。
カスタム IP 範囲を指定するには、[カスタム IP 範囲] を選択して、[GKE クラスタ マスターのプライベート IP] フィールドに CIDR 表記で範囲を入力します。
GKE コントロール プレーンのレベルアクセスを選択します。コントロール プレーンには、エンドポイントが 2 つあります。一方のエンドポイントは限定公開で、クラスタノードと VM が使用します。別のエンドポイントがパブリックです。パブリック エンドポイントのアクセスレベルは、指定できます。
承認済みネットワークからパブリック エンドポイントへのアクセスを有効にするには、[外部 IP アドレスを使用してマスター エンドポイントにアクセスする] チェックボックスをオンにします。
このオプションを使用すると、コントロール プレーンのアクセスレベルが「パブリック エンドポイント アクセスが有効、承認済みネットワークが有効」に設定されます。これにより、承認済みネットワークからコントロール プレーンへのアクセスが制限されます。デフォルトでは、送信元 IP アドレスは指定されません。承認済みネットワークをクラスタに追加できます。
承認済みネットワークからパブリック エンドポイントへのアクセスを無効にするには、[外部 IP アドレスを使用してマスター エンドポイントにアクセスする] チェックボックスをオフにします。
このオプションを使用すると、コントロール プレーンのアクセスレベルが「パブリック エンドポイント アクセスが無効」に設定されます。これにより、コントロール プレーンへのすべてのインターネット アクセスが阻止されます。
[ウェブサーバーのプライベート IP] セクションで、Airflow ウェブサーバー インスタンスの IP 範囲を指定します。
[Cloud SQL のプライベート IP] セクションで、Cloud SQL インスタンスの IP 範囲を指定します。
gcloud
ネットワーキングは、作成する環境の種類に応じて構成する必要があります。
環境を作成する際、次の引数によりネットワーク パラメータが制御されます。パラメータを省略すると、デフォルト値が使用されます。
--enable-private-environmentは、プライベート IP 環境を有効にします。--enable-ip-aliasは、エイリアス IP アドレスを使用して、VPC ネイティブを有効にします。このパラメータは、
--enable-private-environmentを使用する場合、または Pod や Service のセカンダリ範囲を構成する場合に必要です。--networkは、VPC ネットワーク ID を指定します。--subnetworkは、VPC サブネットワーク ID を指定します。--cluster-secondary-range-nameまたは--cluster-ipv4-cidrは、Pod のセカンダリ範囲を構成します。--services-secondary-range-nameまたは--services-ipv4-cidrを使用して、Service のセカンダリ範囲を構成します。--master-ipv4-cidrは、GKE コントロール プレーンの範囲を指定します。
--web-server-ipv4-cidrは、Airflow ウェブサーバー インスタンスの範囲を指定します。--cloud-sql-ipv4-cidrは、Cloud SQL インスタンスの範囲を指定します。
--enable-private-endpointは、GKE コントロール プレーンのレベルアクセスを制御します。コントロール プレーンには、エンドポイントが 2 つあります。一方のエンドポイントは限定公開で、クラスタノードと VM が使用します。別のエンドポイントがパブリックである。パブリック エンドポイントのアクセスレベルは、指定できます。承認済みネットワークからパブリック エンドポイントへのアクセスを有効にするには、
--enable-private-endpoint引数を省略します。このオプションを使用すると、コントロール プレーンのアクセスレベルが「パブリック エンドポイント アクセスが有効、承認済みネットワークが有効」に設定されます。これにより、承認済みネットワークからコントロール プレーンへのアクセスが制限されます。デフォルトでは、送信元 IP アドレスは指定されません。承認済みネットワークをクラスタに追加できます。
承認済みネットワークからパブリック エンドポイントへのアクセスを無効にするには、
--enable-private-endpoint引数を指定します。このオプションを使用すると、コントロール プレーンのアクセスレベルが「パブリック エンドポイント アクセスが無効」に設定されます。これにより、コントロール プレーンへのすべてのインターネット アクセスが阻止されます。
--enable-master-authorized-networks引数と--master-authorized-networks引数は、ご使用の環境の承認済みネットワークを構成します。--enable-privately-used-public-ipsは、ご使用の環境のプライベートで使用されるパブリック IP アドレスを構成します。--enable-ip-masq-agentは、IP マスカレード エージェントを有効にします。
例(プライベート IP 環境)
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-1.20.12-airflow-1.10.15 \
--service-account "SERVICE_ACCOUNT" \
--enable-private-environment \
--enable-ip-alias \
--network NETWORK_ID \
--subnetwork SUBNETWORK_ID \
--cluster-ipv4-cidr PODS_RANGE \
--services-ipv4-cidr SERVICES_RANGE \
--master-ipv4-cidr CONTROL_PLANE_RANGE \
--web-server-ipv4-cidr WEB_SERVER_RANGE \
--cloud-sql-ipv4-cidr SQL_RANGE
以下のように置き換えます。
NETWORK_IDは、VPC ネットワーク ID に置き換えます。SUBNETWORK_IDは、VPC サブネットワーク ID に置き換えます。PODS_RANGEは、Pod のセカンダリ範囲に置き換えます。SERVICES_RANGEは、サービスのセカンダリ範囲に置き換えます。CONTROL_PLANE_RANGEは、GKE コントロール プレーンのセカンダリ範囲に置き換えます。WEB_SERVER_RANGEは、Airflow ウェブサーバー インスタンスのセカンダリ範囲に置き換えます。SQL_RANGEは、Cloud SQL インスタンスの範囲に置き換えます。
ステップ 5. (省略可)ネットワーク タグを追加する
ネットワーク タグは、環境のクラスタ内のすべてのノード VM に適用されます。タグは、ネットワーク ファイアウォールの有効なソースやターゲットを識別するために使用されます。リスト内の各タグは、RFC 1035 に準拠している必要があります。
たとえば、ファイアウォール ルールでプライベート IP 環境のトラフィックを制限する予定がある場合は、ネットワーク タグを追加するとよいかもしれません。
コンソール
[環境の作成] ページで次の操作を行います。
- [ノード構成] セクションを見つけます。
- [タグ] フィールドで、ノード VM のインスタンス タグを指定します。
gcloud
環境を作成する際は、次の引数を使用してネットワーク タグを制御します。
--tagsは、すべてのノード VM に適用されるネットワーク タグのカンマ区切りのリストを指定します。
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-1.20.12-airflow-1.10.15 \
--service-account "SERVICE_ACCOUNT" \
--tags TAGS
以下のように置き換えます。
TAGSは、ネットワーク タグのカンマ区切りのリストに置き換えます。
例:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-1.20.12-airflow-1.10.15 \
--tags group1,production
API
環境を作成するときに、[Environment] > [EnvironmentConfig] リソースで環境のネットワーク タグを指定します。
{
"name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
"config": {
"nodeConfig": {
"tags": [
"TAG"
],
"serviceAccount": "SERVICE_ACCOUNT"
}
}
}
以下のように置き換えます。
TAGは、ネットワーク タグに置き換えます。
例:
// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments
{
"name": "projects/example-project/locations/us-central1/environments/example-environment",
"config": {
"nodeConfig": {
"tags": [
"group1",
"production"
],
"serviceAccount": "
example-account@example-project.iam.gserviceaccount.com
"
}
}
}
Terraform
環境を作成する際は、次のフィールドで環境のネットワーク タグを定義します。
node_configブロックのtagsフィールドは、すべてのノード VM に適用されるネットワーク タグのカンマ区切りのリストを指定します。
resource "google_composer_environment" "example" {
provider = google-beta
name = "ENVIRONMENT_NAME"
region = "LOCATION"
config {
node_config {
tags = ["TAGS"]
service_account = "SERVICE_ACCOUNT"
}
}
}
以下のように置き換えます。
TAGSは、ネットワーク タグのカンマ区切りのリストに置き換えます。
例:
resource "google_composer_environment" "example" {
provider = google-beta
name = "example-environment"
region = "us-central1"
config {
node_config {
tags = ["group1","production"]
service_account = "
example-account@example-project.iam.gserviceaccount.com
"
}
}
}
ステップ 6. (省略可)ウェブサーバーへのネットワーク アクセスを構成する
Airflow ウェブサーバーのアクセス パラメータは、環境の種類に依存しません。代わりに、ウェブサーバーのアクセスを個別に構成できます。たとえば、プライベート IP 環境で、引き続きインターネットから Airflow UI にアクセスできます。
プライベート IP アドレスを使用して許可された IP 範囲を構成することはできません。
コンソール
[環境の作成] ページの [ウェブサーバーの構成] セクションで、次のようにします。
すべての IP アドレスから Airflow ウェブサーバーへのアクセスを許可するには、[すべての IP アドレスからのアクセスを許可する] を選択します。
アクセスを特定の IP 範囲のみに制限するには、[特定の IP アドレスからのアクセスのみを許可する] を選択します。[IP 範囲] フィールドに、CIDR 表記の IP 範囲を指定します。[説明] フィールドに、この範囲の説明を入力します(省略可)。複数の範囲を指定する場合は、[IP 範囲の追加] をクリックします。
すべての IP アドレスのアクセスを禁止するには、[特定の IP アドレスからのアクセスのみを許可する] を選択し、空の範囲エントリの横にある [項目を削除する] をクリックします。
gcloud
ウェブサーバーのアクセスレベルは、環境を作成するとき、次の引数で制御します。
--web-server-allow-allを使用すると、すべての IP アドレスから Airflow にアクセスできます。これはデフォルトのオプションです。--web-server-allow-ipは、特定のソース IP 範囲へのアクセスのみを制限します。複数の IP 範囲を指定するには、この引数を複数回使用します。--web-server-deny-allは、すべての IP アドレスに対してアクセスを禁止します。
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-1.20.12-airflow-1.10.15 \
--web-server-allow-ip ip_range=WS_IP_RANGE,description=WS_RANGE_DESCRIPTION
以下のように置き換えます。
WS_IP_RANGEは、Airflow UI にアクセスできる IP 範囲(CIDR 表記)に置き換えます。WS_RANGE_DESCRIPTIONは、IP 範囲の説明に置き換えます。
例:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-1.20.12-airflow-1.10.15 \
--service-account "
example-account@example-project.iam.gserviceaccount.com
" \
--web-server-allow-ip ip_range=192.0.2.0/24,description="office net 1" \
--web-server-allow-ip ip_range=192.0.4.0/24,description="office net 3"
API
環境を作成するときに、[Environment] > [EnvironmentConfig] リソースでウェブサーバー アクセス パラメータを指定します。
すべての IP アドレスから Airflow のウェブサーバーにアクセスできるようにするには、
webServerNetworkAccessControlを省略します。アクセスを特定の IP 範囲に制限するには、
allowedIpRangesで 1 つ以上の範囲を指定します。すべての IP アドレスに対するアクセスを禁止するには、
allowedIpRangesを追加して空のリストにします。IP 範囲を指定しないでください。
{
"name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
"config": {
"webServerNetworkAccessControl": {
"allowedIpRanges": [
{
"value": "WS_IP_RANGE",
"description": "WS_RANGE_DESCRIPTION"
}
]
},
"nodeConfig": {
"serviceAccount": "SERVICE_ACCOUNT"
}
}
}
以下のように置き換えます。
WS_IP_RANGEは、Airflow UI にアクセスできる IP 範囲(CIDR 表記)に置き換えます。WS_RANGE_DESCRIPTIONは、IP 範囲の説明に置き換えます。
例:
// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments
{
"name": "projects/example-project/locations/us-central1/environments/example-environment",
"config": {
"webServerNetworkAccessControl": {
"allowedIpRanges": [
{
"value": "192.0.2.0/24",
"description": "office net 1"
},
{
"value": "192.0.4.0/24",
"description": "office net 3"
}
]
},
"nodeConfig": {
"serviceAccount": "
example-account@example-project.iam.gserviceaccount.com
"
}
}
}
Terraform
ウェブサーバーにアクセスできる IP 範囲は、環境を作成するとき、web_server_network_access_control ブロックの allowed_ip_range ブロックに含めます。
resource "google_composer_environment" "example" {
provider = google-beta
name = "ENVIRONMENT_NAME"
region = "LOCATION"
config {
web_server_network_access_control {
allowed_ip_range {
value = "WS_IP_RANGE"
description = "WS_RANGE_DESCRIPTION"
}
}
node_config {
service_account = "SERVICE_ACCOUNT"
}
}
}
以下のように置き換えます。
WS_IP_RANGEは、Airflow UI にアクセスできる IP 範囲(CIDR 表記)に置き換えます。WS_RANGE_DESCRIPTIONは、IP 範囲の説明に置き換えます。
例:
resource "google_composer_environment" "example" {
provider = google-beta
name = "example-environment"
region = "us-central1"
config {
web_server_network_access_control {
allowed_ip_range {
value = "192.0.2.0/24"
description = "office net 1"
},
allowed_ip_range {
value = "192.0.4.0/24"
description = "office net 3"
}
}
node_config {
service_account = "
example-account@example-project.iam.gserviceaccount.com
"
}
}
手順 7. (省略可)Airflow 構成のオーバーライドと環境変数を指定する
Airflow 構成のオーバーライドと環境変数は、環境を作成するときに設定できます。あるいは、環境を作成した後に行うこともできます。
一部の Airflow 構成オプションはブロックされているため、オーバーライドすることはできません。
使用可能な Airflow 構成オプションの一覧については、Airflow 2 の構成リファレンスと Airflow 1.10.* をご覧ください。
Airflow 構成のオーバーライドと環境変数を指定するには:
コンソール
[環境の作成] ページで次の操作を行います。
[ネットワーキング、Airflow 構成のオーバーライド、その他の機能] 項目を展開します。
[環境変数] セクションで、[環境変数を追加] をクリックします。
環境変数の [名前] と [値] を入力します。
[Airflow 構成のオーバーライド] セクションで、[AIRFLOW 構成のオーバーライドを追加] をクリックします。
構成オプションをオーバーライドする [セクション]、[キー]、[値] を入力します。
次に例を示します。
セクション キー 値 webserverdag_orientationTB
gcloud
環境変数と Airflow 構成のオーバーライドは、環境を作成するときに、次の引数によって制御されます。
--env-variablesは、環境変数のカンマ区切りリストを指定します。変数名には大文字と小文字、数字、アンダースコアを使用できますが、先頭に数字を配置することはできません。
--airflow-configsは、Airflow 構成のオーバーライドのキーと値のカンマ区切りのリストを指定します。
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-1.20.12-airflow-1.10.15 \
--service-account "SERVICE_ACCOUNT" \
--env-variables ENV_VARS \
--airflow-configs CONFIG_OVERRIDES
以下のように置き換えます。
ENV_VARSは、環境変数のカンマ区切りNAME=VALUEペアのリストに置き換えます。CONFIG_OVERRIDESは、構成のオーバーライドのカンマ区切りのSECTION-KEY=VALUEペアのリストに置き換えます。構成セクションの名前を-記号で区切り、その後にキー名を指定します。(例:core-dags_are_paused_at_creation)。
例:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-1.20.12-airflow-1.10.15 \
--service-account "
example-account@example-project.iam.gserviceaccount.com
" \
--env-variables SENDGRID_MAIL_FROM=user@example.com,SENDGRID_API_KEY=example-key \
--airflow-configs core-dags_are_paused_at_creation=True,webserver-dag_orientation=TB
API
環境を作成するときに、[Environment] > [EnvironmentConfig] リソースで環境変数と Airflow 構成のオーバーライドを指定します。
{
"name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
"config": {
"softwareConfig": {
"airflowConfigOverrides": {
"SECTION-KEY": "OVERRIDE_VALUE"
},
"envVariables": {
"VAR_NAME": "VAR_VALUE",
}
},
"nodeConfig": {
"serviceAccount": "SERVICE_ACCOUNT"
}
}
}
以下のように置き換えます。
SECTIONは、Airflow 構成オプションがある構成ファイルのセクションに置き換えます。KEYは、Airflow 構成オプションの名前に置き換えます。OVERRIDE_VALUEは、Airflow 構成オプションの値に置き換えます。VAR_NAMEは環境変数の名前に置き換えます。VAR_VALUEは環境変数の値に置き換えます。
例:
// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments
{
"name": "projects/example-project/locations/us-central1/environments/example-environment",
"config": {
"softwareConfig": {
"airflowConfigOverrides": {
"core-dags_are_paused_at_creation": "True",
"webserver-dag_orientation": "TB"
},
"envVariables": {
"SENDGRID_MAIL_FROM": "user@example.com",
"SENDGRID_API_KEY": "example-key"
}
},
"nodeConfig": {
"serviceAccount": "
example-account@example-project.iam.gserviceaccount.com
"
}
}
}
Terraform
環境変数と Airflow 構成のオーバーライドは、環境を作成するとき、次のブロックによって制御されます。
software_configブロックのenv_variablesブロックは、環境変数を指定します。変数名には大文字と小文字、数字、アンダースコアを使用できますが、先頭に数字を配置することはできません。
software_configブロックのairflow_config_overridesブロックは、Airflow 構成のオーバーライドを指定します。
resource "google_composer_environment" "example" {
provider = google-beta
name = "ENVIRONMENT_NAME"
region = "LOCATION"
config {
software_config {
airflow_config_overrides = {
SECTION-KEY = "OVERRIDE_VALUE"
}
env_variables = {
VAR_NAME = "VAR_VALUE"
}
}
node_config {
service_account = "SERVICE_ACCOUNT"
}
}
}
以下のように置き換えます。
SECTIONは、Airflow 構成オプションがある構成ファイルのセクションに置き換えます。KEYは、Airflow 構成オプションの名前に置き換えます。OVERRIDE_VALUEは、Airflow 構成オプションの値に置き換えます。VAR_NAMEは環境変数の名前に置き換えます。VAR_VALUEは環境変数の値に置き換えます。
例:
resource "google_composer_environment" "example" {
provider = google-beta
name = "example-environment"
region = "us-central1"
config {
software_config {
airflow_config_overrides = {
core-dags_are_paused_at_creation = "True"
webserver-dag_orientation = "TB"
}
env_variables = {
SENDGRID_MAIL_FROM = "user@example.com"
SENDGRID_API_KEY = "example-key"
}
}
node_config {
service_account = "
example-account@example-project.iam.gserviceaccount.com
"
}
}
}
手順 8. (省略可)メンテナンスの時間枠を指定する
デフォルトでは、Google Cloud コンソール、API、Terraform を使用して作成した場合、Cloud Composer 1 環境にはメンテナンスの時間枠は定義されていません。新規および既存の環境のメンテナンスの時間枠を指定することをおすすめします。
gcloud CLI を使用して環境を作成する場合、環境には毎週金曜日、土曜日、日曜日の 00:00:00~04:00:00(GMT)のメンテナンスの時間枠がデフォルトで設定されます。
環境にカスタム メンテナンスの時間枠を指定するには、次のようにします。
コンソール
[環境の作成] ページで次の操作を行います。
[ネットワーキング、Airflow 構成のオーバーライド、その他の機能] 項目を展開します。
[メンテナンスの時間枠] セクションで、[メンテナンスの時間枠にカスタム時間を設定する] チェックボックスをオンにします。
[タイムゾーン] プルダウン リストで、メンテナンスの時間枠のタイムゾーンを選択します。
[開始時刻]、[日]、[長さ] を設定して、指定したスケジュールの組み合わせ時刻が少なくとも 7 日間 12 時間のローリング ウィンドウになるようにします。たとえば、毎週月曜日、水曜日、金曜日の 4 時間に、必要な時間を指定します。
gcloud
メンテナンスの時間枠のパラメータは、次の引数により定義されます。
--maintenance-window-startは、メンテナンスの時間枠の開始時間を設定します。--maintenance-window-endは、メンテナンスの時間枠の終了時間を設定します。--maintenance-window-recurrenceは、メンテナンスの時間枠の繰り返しを設定します。
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-1.20.12-airflow-1.10.15 \
--service-account "SERVICE_ACCOUNT" \
--maintenance-window-start 'DATETIME_START' \
--maintenance-window-end 'DATETIME_END' \
--maintenance-window-recurrence 'MAINTENANCE_RECURRENCE'
以下のように置き換えます。
ENVIRONMENT_NAMEを環境の名前にする。DATETIME_STARTを、日付 / 時刻の入力形式の開始日時にする。指定した時刻のみが使用され、指定した日付は無視されます。DATETIME_ENDを、終了日付 / 時刻入力形式の日時にする。指定した時刻のみが使用され、指定した日付は無視されます。指定する日付と時刻は開始日より後にする必要があります。MAINTENANCE_RECURRENCEを、繰り返しのメンテナンス時間枠の RFC 5545 RRULE に置き換えます。Cloud Composer では、次の 2 つの形式がサポートされています。FREQ=DAILY形式は、毎日の繰り返しを指定します。FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SA形式は、選択した曜日の繰り返しを指定します。
次の例は、水曜日、土曜日、日曜日の 01:00~07:00(UTC)の 6 時間を、メンテナンスの時間枠として指定しています。2023 年 1 月 1 日は無視されます。
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-1.20.12-airflow-1.10.15 \
--service-account "
example-account@example-project.iam.gserviceaccount.com
" \
--maintenance-window-start '2023-01-01T01:00:00Z' \
--maintenance-window-end '2023-01-01T07:00:00Z' \
--maintenance-window-recurrence 'FREQ=WEEKLY;BYDAY=SU,WE,SA'
API
環境を作成するときに、[Environment] > [EnvironmentConfig] リソースでメンテナンスの時間枠のパラメータを指定します。
{
"name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
"config": {
"maintenanceWindow": {
"startTime": "DATETIME_START",
"endTime": "DATETIME_END",
"recurrence": "MAINTENANCE_RECURRENCE"
},
"nodeConfig": {
"serviceAccount": "SERVICE_ACCOUNT"
}
}
}
以下のように置き換えます。
DATETIME_STARTを、日付 / 時刻の入力形式の開始日時にする。指定した時刻のみが使用され、指定された日付は無視されます。DATETIME_ENDを、終了日付 / 時刻入力形式の日時にする。指定した時刻のみが使用され、指定した日付は無視されます。指定する日付と時刻は開始日より後にする必要があります。MAINTENANCE_RECURRENCEを、繰り返しのメンテナンス時間枠の RFC 5545 RRULE にする。Cloud Composer では、次の 2 つの形式がサポートされています。FREQ=DAILY形式は、毎日の繰り返しを指定します。FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SA形式は、選択した曜日の繰り返しを指定します。
次の例は、水曜日、土曜日、日曜日の 01:00~07:00(UTC)の 6 時間を、メンテナンスの時間枠として指定しています。2023 年 1 月 1 日は無視されます。
例:
// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments
{
"name": "projects/example-project/locations/us-central1/environments/example-environment",
"config": {
"maintenanceWindow": {
"startTime": "2023-01-01T01:00:00Z",
"endTime": "2023-01-01T07:00:00Z",
"recurrence": "FREQ=WEEKLY;BYDAY=SU,WE,SA"
},
"nodeConfig": {
"serviceAccount": "SERVICE_ACCOUNT"
}
}
}
Terraform
maintenance_window ブロックでは、環境のメンテナンスの時間枠を指定します。
resource "google_composer_environment" "example" {
provider = google-beta
name = "ENVIRONMENT_NAME"
region = "LOCATION"
config {
maintenance_window {
start_time = "DATETIME_START"
end_time = "DATETIME_END"
recurrence = "MAINTENANCE_RECURRENCE"
}
node_config {
service_account = "SERVICE_ACCOUNT"
}
}
}
以下のように置き換えます。
DATETIME_STARTを、日付 / 時刻の入力形式の開始日時にする。指定した時刻のみが使用され、指定された日付は無視されます。DATETIME_ENDを、終了日付 / 時刻入力形式の日時にする。指定した時刻のみが使用され、指定した日付は無視されます。指定する日付と時刻は開始日より後にする必要があります。MAINTENANCE_RECURRENCEを、繰り返しのメンテナンス時間枠の RFC 5545 RRULE にする。Cloud Composer では、次の 2 つの形式がサポートされています。FREQ=DAILY形式は、毎日の繰り返しを指定します。FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SA形式は、選択した曜日の繰り返しを指定します。
次の例は、水曜日、土曜日、日曜日の 01:00~07:00(UTC)の 6 時間を、メンテナンスの時間枠として指定しています。2023 年 1 月 1 日は無視されます。
resource "google_composer_environment" "example" {
provider = google-beta
name = "example-environment"
region = "us-central1"
config {
maintenance_window {
start_time = "2023-01-01T01:00:00Z"
end_time = "2023-01-01T07:00:00Z"
recurrence = "FREQ=WEEKLY;BYDAY=SU,WE,SA"
}
}
}
手順 9. (省略可)データ暗号化を構成する(CMEK)
デフォルトでは、環境内のデータは Google が提供する鍵で暗号化されます。
顧客管理の暗号鍵(CMEK)を使用して環境内のデータを暗号化するには、顧客管理の暗号鍵の使用で概説している手順に沿って操作してください。
手順 10. (省略可)環境ラベルを指定する
環境にラベルを割り当てると、ラベルに基づいて請求額の内訳を調べることができます。
コンソール
[環境の作成] ページで次の操作を行います。
[ネットワーキング、Airflow 構成のオーバーライド、その他の機能] 項目を展開します。
[ラベル] セクションで [ラベルを追加] をクリックします。
[キー] フィールドと [値] フィールドで、環境ラベルのキーと値のペアを指定します。
gcloud
環境を作成するときに、--labels 引数が環境ラベルを含むキーと値のカンマ区切りのリストを指定します。
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-1.20.12-airflow-1.10.15 \
--service-account "SERVICE_ACCOUNT" \
--labels LABELS
以下のように置き換えます。
LABELSは、環境ラベルのカンマ区切りのKEY=VALUEペアのリストに置き換えます。
例:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-1.20.12-airflow-1.10.15 \
--service-account "
example-account@example-project.iam.gserviceaccount.com
" \
--labels owner=engineering-team,env=production
API
環境を作成するときに、環境リソースで環境のラベルを指定します。
{
"name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
"labels": {
"LABEL_KEY": "LABEL_VALUE"
}
}
以下のように置き換えます。
LABEL_KEYは、環境ラベルのキーに置き換えます。LABEL_VALUEは、環境ラベルの値に置き換えます。
例:
// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments
{
"name": "projects/example-project/locations/us-central1/environments/example-environment",
"labels": {
"owner": "engineering-team",
"env": "production"
}
}
Terraform
config ブロックの外部にある labels ブロックのラベルは、環境を作成するときに指定します。
resource "google_composer_environment" "example" {
provider = google-beta
name = "ENVIRONMENT_NAME"
region = "LOCATION"
labels = {
LABEL_KEY = "LABEL_VALUE"
}
}
以下のように置き換えます。
LABEL_KEYは、環境ラベルのキーに置き換えます。LABEL_VALUEは、環境ラベルの値に置き換えます。
例:
resource "google_composer_environment" "example" {
provider = google-beta
name = "example-environment"
region = "us-central1"
labels = {
owner = "engineering-team"
env = "production"
}
}
手順 11. (省略可)その他のパラメータを構成する
その他のパラメータには以下のものがあります。
環境ノードのゾーン
クラスタノードをデプロイする Compute Engine のゾーン。このパラメータでは、環境のロケーション内の特定のゾーンを選択できます。
デフォルトでは、ランダムなゾーンが自動的に選択されます。
OAuth スコープ
OAuth スコープとは、すべてのノード VM で使用可能にする一連の Google API スコープです。空の場合、デフォルトで
https://www.googleapis.com/auth/cloud-platformになります。カスタム OAuth スコープを指定する場合は、指定したスコープのリストに
https://www.googleapis.com/auth/cloud-platformを挿入します。Python バージョン
Airflow 1.10.* 以前の Airflow バージョンを使用する環境では、Python 2 を使用できます。Python のデフォルトのバージョンは Python 3 です。Cloud Composer での Python 2 のサポートの詳細については、サポートされている Python のバージョンをご覧ください。
コンソール
[環境の作成] ページで次の操作を行います。
[Node configuration] セクションで、次のようにします。
[ゾーン] プルダウン リストで、環境ノードのゾーンを選択します。
ゾーンを後で変更することはできません。
[OAuth スコープ] フィールドで、ノード VM の OAuth スコープを指定します。
OAuth スコープは、後で変更できません。
複数の OAuth スコープを指定するには、値のカンマ区切りリストを指定します。指定したスコープのリストに
https://www.googleapis.com/auth/cloud-platformを含めます。[Python バージョン] フィールドで、Python のバージョンを選択します。
Python バージョンは、後で変更できません。
gcloud
環境のその他のパラメータは、環境を作成するとき、次の引数で制御します。
--zoneは、環境の VM の Compute Engine ゾーンを指定します。--oauth-scopesは、OAuth スコープのカンマ区切りリストを指定します。 指定したスコープのリストにhttps://www.googleapis.com/auth/cloud-platformを含めます。--python-versionは、Python のバージョンを指定します。
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-1.20.12-airflow-1.10.15 \
--service-account "SERVICE_ACCOUNT" \
--zone ZONE \
--oauth-scopes OAUTH_SCOPES \
--python-version PYTHON_VERSION
以下のように置き換えます。
ZONEは、Compute Engine ゾーンの名前に置き換えます。OAUTH_SCOPESは、OAuth スコープのカンマ区切りのリストに置き換えます。PYTHON_VERSIONは、Python バージョン(3または2)に置き換えます。
例:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-1.20.12-airflow-1.10.15 \
--service-account "
example-account@example-project.iam.gserviceaccount.com
" \
--zone us-central1-a \
--oauth-scopes https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/bigquery \
--python-version 3
API
環境を作成するときに、[Environment] > [EnvironmentConfig] リソースで環境のその他のパラメータを指定します。
{
"name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
"config": {
"nodeConfig": {
"location": "projects/PROJECT_ID/zones/ZONE",
"oauthScopes": [
"OAUTH_SCOPE"
],
"serviceAccount": "SERVICE_ACCOUNT"
},
"softwareConfig": {
"pythonVersion": "PYTHON_VERSION"
}
}
}
以下のように置き換えます。
ZONEは、Compute Engine ゾーンの名前に置き換えます。OAUTH_SCOPEは、OAuth スコープに置き換えます。追加のスコープを指定するには、https://www.googleapis.com/auth/cloud-platformスコープと他のスコープ項目を追加します。PYTHON_VERSIONは、Python バージョン(3または2)に置き換えます。
例:
// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments
{
"name": "projects/example-project/locations/us-central1/environments/example-environment",
"config": {
"nodeConfig": {
"location": "projects/example-project/zones/us-central1-a",
"oauthScopes": [
"https://www.googleapis.com/auth/cloud-platform",
"https://www.googleapis.com/auth/bigquery"
],
"serviceAccount": "
example-account@example-project.iam.gserviceaccount.com
"
},
"softwareConfig": {
"pythonVersion": "3"
}
}
}
Terraform
環境のその他のパラメータは、環境を作成するとき、次のフィールドで制御します。
node_configブロックのzoneフィールドは、環境の VM の Compute Engine ゾーンを指定します。node_configブロックのoauth_scopesフィールドは、OAuth スコープのカンマ区切りリストを指定します。software_configブロックのpython_versionフィールドは、Python のバージョンを指定します。
resource "google_composer_environment" "example" {
name = "ENVIRONMENT_NAME"
region = "LOCATION"
config {
node_config {
zone = "ZONE"
oauth_scopes = "[OAUTH_SCOPES]"
service_account = "SERVICE_ACCOUNT"
}
software_config {
python_version = "PYTHON_VERSION"
}
}
}
以下のように置き換えます。
ZONEは、Compute Engine ゾーンの名前に置き換えます。OAUTH_SCOPESは、OAuth スコープのカンマ区切りのリストに置き換えます。PYTHON_VERSIONは、Python バージョン(3または2)に置き換えます。
例:
resource "google_composer_environment" "example" {
name = "example-environment"
region = "us-central1"
config {
node_config {
zone = "us-central1-a"
oauth_scopes = "[https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/bigquery]"
service_account = "
example-account@example-project.iam.gserviceaccount.com
"
}
software_config {
python_version = "3"
}
}
}
ステップ 12. (省略可)ベータ版 API の使用を強制する
環境にプレビュー機能がない場合でも、環境でベータ版の Cloud Composer API を使用するように明示的に設定できます。この設定を行うと、環境は v1beta1 サービス エンドポイントを使用して作成されます。
コンソール
[環境の作成] ページで次の操作を行います。
[ネットワーキング、Airflow 構成のオーバーライド、その他の機能] 項目を展開します。
[ベータ版 API] セクションで、[ベータ版 API の使用を強制する] チェックボックスをオンにします。
gcloud
環境は、gcloud beta composer コマンドを使用して作成します。
API
環境は、v1beta1 サービス エンドポイントを使用して作成します。
Terraform
Cloud Composer の Terraform プロバイダでは、デフォルトでベータ版 API を使用します。
次のステップ
- 環境作成のトラブルシューティング
- 共有 VPC の構成
- VPC Service Controls の構成
- DAG の追加と更新
- Airflow UI へのアクセス
- 環境の更新と削除
- Cloud Composer のバージョンについて