Cloud Composer 環境を作成する

Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3

このページでは、Cloud Composer 環境を作成する方法について説明します。

始める前に

ステップ 1. 環境のサービス アカウントを作成または選択する

環境を作成するときに、サービス アカウントを指定します。このサービス アカウントは、環境のサービス アカウントと呼ばれます。環境では、このサービス アカウントを使用してほとんどのオペレーションを実行します。

ご使用の環境のサービス アカウントはユーザー アカウントではありません。サービス アカウントは、ユーザーではなく、アプリケーションや仮想マシン(VM)インスタンスで使用される特別なアカウントです。

ご使用の環境のサービス アカウントは後で変更できません。

プロジェクトに Cloud Composer 環境のサービス アカウントがまだない場合は、作成します。

Terraform で環境のサービス アカウントを作成する詳細な例については、環境の作成(Terraform)をご覧ください。

環境に新しいサービス アカウントを作成するには:

  1. Identity and Access Management のドキュメントの説明に沿って、新しいサービス アカウントを作成します

  2. Identity and Access Management のドキュメントに記載されているように、ロールを付与します。必要なロールは Composer ワーカーcomposer.worker)です。

  3. お使いの環境でリソース ロケーションの制限を使用するか、プライベート パッケージ インデックスから PyPI パッケージをインストールする場合は、環境を実行するユーザー管理のサービス アカウントサービス アカウント ユーザーiam.serviceAccountUser)ロールを付与します。

  4. Google Cloud プロジェクト内の他のリソースにアクセスするには、このサービス アカウントに、それらのリソースにアクセスするための追加の権限を付与します。ほとんどの場合、Composer ワーカーcomposer.worker)ロールには、この必要な権限セットが付与されています。このサービス アカウントに追加の権限を追加するのは、DAG の運用に必要な場合のみです。

ステップ 2. 基本設定

この手順では、指定したロケーションにデフォルト パラメータを持つ Cloud Composer 環境を作成します。

コンソール

  1. Google Cloud コンソールで、[環境の作成] ページに移動します。

    [環境の作成] に移動

  2. [名前] フィールドに、環境の名前を入力します。

    名前は先頭を小文字にして、その後に 62 文字以下の小文字、数字、ハイフンで構成します。末尾をハイフンにすることはできません。環境名は環境のサブコンポーネントの作成に使用されるため、Cloud Storage バケット名としても有効な名前を指定する必要があります。制限事項の一覧については、バケットの命名ガイドラインをご覧ください。

  3. [ロケーション] プルダウン リストで、環境のロケーションを選択します。

    ロケーションは、環境が配置されているリージョンです。

  4. [イメージのバージョン] プルダウン リストで、必要なバージョンの Airflow を含む Cloud Composer イメージを選択します。

  5. [ノードの構成] セクションの [サービス アカウント] プルダウン リストで、環境のサービス アカウントを選択します。

    環境のサービス アカウントがまだない場合は、環境のサービス アカウントを作成または選択するをご覧ください。

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 クラスタ内のノード数を指定し、環境コンポーネントのマシンタイプを選択します。

Console

[環境の作成] ページで次の操作を行います。

  1. [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 のドキュメントをご覧ください。

  2. [ネットワーキング、Airflow 構成のオーバーライド、その他の機能] 項目を展開します。

  3. [Cloud SQL 構成] セクションで、[Cloud SQL マシンタイプ] を選択します。

    このパラメータにより、Airflow データベースを実行する Cloud SQL インスタンスのマシンタイプが決まります。Cloud SQL のデフォルトのマシンタイプは db-n1-standard-2 です。

  4. [ウェブサーバーの構成] セクションで、[ウェブサーバーのマシンタイプ] を選択します。

    このパラメータにより、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

以下のように置き換えます。

例:

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 環境を構成します。

    1. プロジェクトのネットワークをプライベート IP 環境用に構成する
    2. このセクションで詳細に説明するように、プライベート 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 環境を作成するには、次のようにします。

  1. ネットワーキングは、作成する環境の種類に応じて構成する必要があります。

  2. [ネットワーキング、Airflow 構成のオーバーライド、その他の機能] 項目を展開します。

  3. [ネットワークの構成] セクションで、[VPC ネイティブの有効化(エイリアス IP を使用)] チェックボックスをオンにします。

  4. [ネットワーク] プルダウン リストで、VPC ネットワーク ID を選択します。

  5. [サブネットワーク] プルダウン リストで、VPC サブネットワーク ID を選択します。

  6. [Pod IP アドレスの割り振り] セクションで、Pod のセカンダリ IP 範囲を指定します。VPC ネットワーク内の既存のセカンダリ範囲を使用するか、CIDR 表記に新しい範囲を指定できます。

  7. [サービス IP アドレスの割り振り] セクションで、サービスのセカンダリ IP 範囲を指定します。VPC ネットワーク内の既存のセカンダリ範囲を使用するか、CIDR 表記に新しい範囲を指定できます。

  8. [プライベート IP] セクションで、[プライベート IP を有効にする] チェックボックスをオンにします。

  9. [GKE クラスタ マスターのプライベート IP] セクションで、GKE コントロール プレーンの IP 範囲を指定します。

    • 環境が配置されているリージョンにデフォルトの IP 範囲を使用するには、[デフォルトの IP 範囲] を選択します。

    • カスタム IP 範囲を指定するには、[カスタム IP 範囲] を選択して、[GKE クラスタ マスターのプライベート IP] フィールドに CIDR 表記で範囲を入力します。

  10. GKE コントロール プレーンのレベルアクセスを選択します。コントロール プレーンには、エンドポイントが 2 つあります。一方のエンドポイントは限定公開で、クラスタノードと VM が使用します。別のエンドポイントがパブリックです。パブリック エンドポイントのアクセスレベルは、指定できます。

    • 承認済みネットワークからパブリック エンドポイントへのアクセスを有効にするには、[外部 IP アドレスを使用してマスター エンドポイントにアクセスする] チェックボックスをオンにします。

      このオプションを使用すると、コントロール プレーンのアクセスレベルが「パブリック エンドポイント アクセスが有効、承認済みネットワークが有効」に設定されます。これにより、承認済みネットワークからコントロール プレーンへのアクセスが制限されます。デフォルトでは、送信元 IP アドレスは指定されません。承認済みネットワークをクラスタに追加できます。

    • 承認済みネットワークからパブリック エンドポイントへのアクセスを無効にするには、[外部 IP アドレスを使用してマスター エンドポイントにアクセスする] チェックボックスをオフにします。

      このオプションを使用すると、コントロール プレーンのアクセスレベルが「パブリック エンドポイント アクセスが無効」に設定されます。これにより、コントロール プレーンへのすべてのインターネット アクセスが阻止されます。

  11. [ウェブサーバーのプライベート IP] セクションで、Airflow ウェブサーバー インスタンスの IP 範囲を指定します。

  12. [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 環境のトラフィックを制限する予定がある場合は、ネットワーク タグを追加するとよいかもしれません。

コンソール

[環境の作成] ページで次の操作を行います。

  1. [ノード構成] セクションを見つけます。
  2. [タグ] フィールドで、ノード 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 構成のオーバーライドと環境変数を指定するには:

コンソール

[環境の作成] ページで次の操作を行います。

  1. [ネットワーキング、Airflow 構成のオーバーライド、その他の機能] 項目を展開します。

  2. [環境変数] セクションで、[環境変数を追加] をクリックします。

  3. 環境変数の [名前] と [] を入力します。

  4. [Airflow 構成のオーバーライド] セクションで、[AIRFLOW 構成のオーバーライドを追加] をクリックします。

  5. 構成オプションをオーバーライドする [セクション]、[キー]、[] を入力します。

    例:

    セクション キー
    webserver dag_orientation TB

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)のメンテナンスの時間枠がデフォルトで設定されます。

環境にカスタム メンテナンスの時間枠を指定するには、次のようにします。

コンソール

[環境の作成] ページで次の操作を行います。

  1. [ネットワーキング、Airflow 構成のオーバーライド、その他の機能] 項目を展開します。

  2. [メンテナンスの時間枠] セクションで、[メンテナンスの時間枠にカスタム時間を設定する] チェックボックスをオンにします。

  3. [タイムゾーン] プルダウン リストで、メンテナンスの時間枠のタイムゾーンを選択します。

  4. [開始時刻]、[]、[長さ] を設定して、指定したスケジュールの組み合わせ時刻が少なくとも 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. (省略可)環境ラベルを指定する

環境にラベルを割り当てると、ラベルに基づいて請求額の内訳を調べることができます。

コンソール

[環境の作成] ページで次の操作を行います。

  1. [ネットワーキング、Airflow 構成のオーバーライド、その他の機能] 項目を展開します。

  2. [ラベル] セクションで [ラベルを追加] をクリックします。

  3. [キー] フィールドと [] フィールドで、環境ラベルのキーと値のペアを指定します。

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 のバージョンをご覧ください。

Console

[環境の作成] ページで次の操作を行います。

  1. [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 サービス エンドポイントを使用して作成されます。

Console

[環境の作成] ページで次の操作を行います。

  1. [ネットワーキング、Airflow 構成のオーバーライド、その他の機能] 項目を展開します。

  2. [ベータ版 API] セクションで、[ベータ版 API の使用を強制する] チェックボックスをオンにします。

gcloud

環境は、gcloud beta composer コマンドを使用して作成します。

API

環境は、v1beta1 サービス エンドポイントを使用して作成します。

Terraform

Cloud Composer の Terraform プロバイダでは、デフォルトでベータ版 API を使用します。

次のステップ