環境の作成

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

Cloud Composer 環境では Apache Airflow ソフトウェアを実行します。Google Cloud(GCP)プロジェクトで新しい環境を作成する場合、Compute Engine のマシンタイプやクラスタ内のノード数など、いくつかのパラメータを指定できます。

始める前に

アクセス制御

  • 環境の作成中に、環境の GKE ノードを実行するサービス アカウントを指定します。デフォルトでは、Cloud Composer 環境は Google が管理するデフォルトの Compute Engine サービス アカウントを使用して実行されます。Cloud Composer サービスに固有のロールを持つユーザー管理のサービス アカウントで環境を実行することをおすすめします。

  • ユーザーが管理するサービス アカウントが、タスクの実行中に Google Cloud プロジェクト内の他のリソースにアクセスする必要がある場合は、必要なロールをサービス アカウントに付与できます。代わりの方法として、関連する認証情報を Airflow 接続に提供してから、演算子でその接続を参照することもできます。

  • プロジェクトの IAM ポリシーと GCP Console に Google が管理するサービス アカウントが表示されます。たとえば、service-PROJECT_NUMBER@cloudcomposer-accounts.iam.gserviceaccount.com はサービス エージェントと呼ばれる Google 管理の特別なサービス アカウントの名前です。プロジェクト内の Cloud Composer 環境を管理(作成、更新、削除)するために、Cloud Composer サービスによって使用されます。

  • あるプロジェクトの Cloud Composer 環境を別のプロジェクトのユーザー管理サービス アカウントとして実行する場合は、プロジェクト間で機能するようにユーザー管理のサービス アカウントを構成する必要があります。

    このプロセスの一部として、ユーザーが管理するサービス アカウントの次の Google 管理のサービス アカウントに、サービス アカウント トークン作成者のロールを付与する必要があります。

    • Compute Engine のデフォルトのサービス アカウント(PROJECT_NUMBER-compute@developer.gserviceaccount.com
    • Cloud Composer サービス エージェント(service-PROJECT_NUMBER@cloudcomposer-accounts.iam.gserviceaccount.com
  • セキュリティ境界内に Cloud Composer 環境をデプロイするには、VPC Service Controls の構成をご覧ください。Cloud Composer と併用する場合、VPC Service Controls には既知の制限事項があります。

新しい環境を作成する

Cloud Composer 環境を作成する手順は次のとおりです。

Console

  1. Google Cloud Console で [環境の作成] ページを開きます。

    [環境の作成] ページを開く

  2. 環境の名前を入力します。

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

  3. [ノード構成] で、Google Kubernetes Engine クラスタのノードの設定を指定します。設定を指定しない場合は、デフォルトの設定が使用されます。

    設定 説明
    ノード数 環境の実行に使用する Google Kubernetes Engine のノード数。デフォルトのノード数は 3 です。一度ノード数を指定すると、環境を更新するまで維持されます。
    ロケーション (必須)環境を作成する Compute Engine のリージョン
    ゾーン接尾辞 Apache Airflow を実行する仮想マシンのインスタンスを作成する Compute Engine のゾーン。指定しない場合は、ロケーション内のゾーンがランダムに選択されます。
    マシンタイプ クラスタ インスタンスに使用する Compute Engine のマシンタイプ。マシンタイプによって、環境の CPU 数とメモリ容量が決まります。デフォルトのマシンタイプは n1-standard-1 です。
    ディスクサイズ ノード VM インスタンスに使用するディスクサイズ(GB)。最小サイズは 20 GB です。デフォルトのサイズは 100 GB です。
    OAuth スコープ すべてのノード VM インスタンスで利用可能になる Google API スコープのセット。デフォルトは https://www.googleapis.com/auth/cloud-platform であり、指定された範囲のリストに含める必要があります。
    サービス アカウント 環境の GKE ノードを実行するサービス アカウントです。指定しない場合は、デフォルトの Compute Engine サービス アカウントが使用されます。
    タグ ノード VM インスタンスのすべてに適用されるインスタンス タグのリスト。タグは、ネットワーク ファイアウォールの有効なソースやターゲットを識別するために使用されます。リスト内の各タグは、RFC 1035 に準拠している必要があります。
    イメージのバージョン 環境に使用する Cloud Composer のバージョン(Cloud Composer と Airflow のバージョンを含む)。デフォルトのバージョン情報については、バージョン リストをご覧ください。
    Python バージョン 環境に使用する Python のバージョン。サポートされているバージョンは Python 2 と Python 3 です。デフォルトのバージョンは 3 です。
  4. [Cloud SQL configuration] で、Airflow データベースを実行する Cloud SQL インスタンスの設定を指定します。設定を指定しない場合は、デフォルトの設定が使用されます。

    設定 説明
    Cloud SQL マシンタイプ Airflow データベースを実行する Cloud SQL インスタンスのマシンタイプ。マシンタイプによって、環境の CPU 数とメモリ容量が決まります。
  5. [Network configuration] で、Google Kubernetes Engine クラスタのネットワーク設定を指定します。設定を指定しない場合は、デフォルトの設定が使用されます。

    設定 説明
    VPC ネイティブの有効化(エイリアス IP を使用) 環境のエイリアス IP を使用して、VPC ネイティブ GKE クラスタを作成します。デフォルトは、ルートベースの GKE クラスタです。これは、プライベート IP Cloud Composer 環境に必要です。
    ネットワーク マシンの通信に使用する Virtual Private Cloud ネットワーク。ネットワークは、サブネットワークを指定するために必要です。指定しない場合は、デフォルトのネットワークが使用されます。共有 VPCにはホスト プロジェクトが必要です。
    サブネットワーク マシンの通信に使用する Virtual Private Cloud サブネットワーク。ネットワークでカスタムモードのネットワークが使用されている場合、サブネットワークが必要です。
    Pod IP アドレスの割り当て GKE クラスタ内の Pod の IP アドレスを割り当てるセカンダリ範囲。指定されなければ、新しいセカンダリ範囲が作成されます。この設定は変更できません。
    サービス IP アドレスの割り当て Cloud Composer サービスのスペースを予約するためのセカンダリ範囲。指定されなければ、新しいセカンダリ範囲が作成されます。この設定は変更できません。
    プライベート IP 環境 プライベート IP Cloud Composer 環境を有効にします。デフォルトでは無効にされています。
    外部 IP アドレスを使用して GKE マスターにアクセスする GKE クラスタ マスターへの公開アクセスを有効にします。プライベート IP 環境が必要になります。
    GKE マスター IP 範囲 マスターの VPC のプライベート RFC 1918 の範囲です。指定されなければ、デフォルト値の 172.16.0.0/28 が使用されます。プライベート IP 環境では必須です。

    セカンダリ範囲がクラスタのサイズに対応し、予想される増大に対して十分な大きさであることを確認します。たとえば、3 ノードの Cloud Composer 環境のセカンダリ範囲のネットワーク プレフィックスは、次の値を超えないように指定します。

    • Pod: /22
    • Service: /27

    Pod のセカンダリ範囲サービスの構成に関するガイドラインについては、VPC ネイティブ クラスタの作成をご覧ください。

  6. [ウェブサーバーの構成] で、環境の Airflow ウェブサーバーにアクセスできる IP 範囲と、Airflow ウェブサーバーのマシンタイプを指定します。

    設定 説明
    すべての IP アドレスからのアクセスを許可する(デフォルト) すべての IP 範囲が Airflow ウェブサーバーにアクセスできます。
    特定の IP アドレスからのアクセスのみを許可する 特定の IP 範囲のみがウェブサーバーにアクセスできます。新しい範囲を追加するには、[IP 範囲を追加] をクリックします。範囲を削除するには、その行のゴミ箱ボタンをクリックします。すべての IP 範囲を拒否するには、すべての行を削除します。
    ウェブサーバーのマシンタイプ Airflow ウェブサーバーを実行する Compute Engine インスタンスのマシンタイプ。マシンタイプによって、環境の CPU 数とメモリ容量が決まります。
  7. (プレビュー)[メンテナンスの時間枠] で、Cloud Composer による環境メンテナンスのカスタムの時間枠を設定できます。この時間枠中には環境が一時的に使用できなくなる可能性があるため、ワークフローを実行する可能性が低い時間帯(週末やオフピークなど)を選択します。メンテナンスの時間枠は、合計で週あたり 12 時間以上である必要があります。環境を作成した後に、[環境の詳細] ページの [環境の構成] タブで設定することもできます。

  8. (省略可)Airflow 構成ファイル(airflow.cfg)のデフォルト値をオーバーライドするには、[Airflow 構成プロパティの追加] をクリックします。

  9. (省略可)[環境変数の追加] をクリックして、環境変数を構成します。 要件については、環境変数をご覧ください。

  10. (省略可)[ラベルを追加] をクリックして、ラベルを追加します。

    ラベルキーとラベル値には、文字、数字、ダッシュ、アンダースコアのみを含めることができます。ラベルキーの先頭は文字または数字である必要があります。

  11. [作成] をクリック

gcloud

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    OTHER_ARGUMENTS

次のパラメータを指定します。

  • ENVIRONMENT_NAME は、環境の名前です。パターン ^[a-z](?:[-0-9a-z]{0,61}[0-9a-z])?$ と一致している必要があります。環境名は環境のサブコンポーネントの作成に使用されるため、Cloud Storage バケット名としても有効な名前を指定する必要があります。制限事項の一覧については、バケットの命名ガイドラインをご覧ください。
  • LOCATION は、環境が配置される Compute Engine のリージョンです。Composer を使用できる場所にロケーションを指定してください。

次のパラメータはオプションです。

  • airflow-configs は、SECTION_NAME-PROPERTY_NAME=VALUE のリストです。Airflow の構成によってオーバーライドされます。セクション名とプロパティ名はハイフンで区切る必要があります。
  • cloud-sql-machine-type は、Airflow データベースを実行する Cloud SQL インスタンスのマシンタイプです。マシンタイプによって、環境の CPU 数とメモリ容量が決まります。デフォルトのマシンタイプは db-n1-standard-2 です。 このパラメータで指定できる値は db-n1-standard-2db-n1-standard-4db-n1-standard-8db-n1-standard-16 です。
  • disk-size は、ノード VM に使用するディスクのサイズ(GB)です。最小サイズは 20 GB で、デフォルトのサイズは 100 GB です。
  • env-variables は、Airflow スケジューラ、ワーカー、ウェブサーバー プロセスに設定されている NAME=VALUE 環境変数のリストです。
  • enable-private-environment は、プライベート IP Cloud Composer 環境を有効にします。
    • master-ipv4-cidr は、マスターの VPC のプライベート RFC 1918 の範囲です。 enable-private-environment が true の場合に必要です。
  • enable-private-endpoint は、GKE クラスタ マスターへの公開アクセスを有効にします。enable-private-environment が必須です。
  • enable-ip-alias は、エイリアス IP アドレスを使用して、VPC ネイティブを有効にします。enable-private environment が true の場合、または Pod や Service のセカンダリ範囲を構成する場合に必要です。
    • cluster-secondary-range-name または cluster-ipv4-cidr は、Pod のセカンダリ範囲を構成します。
    • services-secondary-range-name または services-ipv4-cidr は、Service のセカンダリ範囲を構成します。
    • プレビュー: max-pods-per-node は、環境の作成時に割り当てられた GKE クラスタのノードあたりの最大ポッドを構成します。この値を下げると、Cloud Composer Kubernetes クラスタによる IP アドレスの消費が削減されます。詳しくは、IP アドレスの割り当ての最適化をご覧ください。 この値は、環境が VPC ネイティブの場合のみ、環境の作成時にのみ設定できます。可能な値の範囲は 8~110 で、デフォルトは 32 です。プレビュー版でこのパラメータを使用する場合、gcloud beta composer コマンドを使用する必要があります。
  • image-version は、composer-a.b.c-airflow-x.y.z の形式で環境で使用される composer-addon バージョンと Airflow バージョンです。バージョンのエイリアスとデフォルトのバージョン情報については、Cloud Composer のバージョ二ングをご覧ください。
  • labels は、環境とそのリソースに付けるユーザー指定のラベルです。
  • machine-type は、Compute Engine のマシンタイプです。 マシンタイプによって、環境の CPU 数とメモリ容量が決まります。デフォルトのマシンタイプは n1-standard-1 です。
  • network は、マシンの通信に使用する Virtual Private Cloud ネットワークです。
    • ネットワークは、サブネットワークを指定するために必要です。指定しない場合は、デフォルトのネットワークが使用されます。
    • 共有 VPC を使用する場合は、ネットワークの相対的なリソース名projects/HOST_PROJECT_ID/global/networks/NETWORK_ID の形式で指定する必要があります。共有 VPC サブネットワークの要件については、以下の subnetwork をご覧ください。
  • node-count は、環境を実行するために使用する GKE ノードの数です。デフォルトのノード数は 3 です。一度ノード数を指定すると、環境を更新するまで維持されます。
  • oauth-scopes は、すべてのノード VM で使用可能な Google API スコープのセットです。デフォルトの OAuth スコープは https://www.googleapis.com/auth/cloud-platform であり、指定されている場合はスコープのリストに含める必要があります。
  • python-version は、環境で使用する Python のバージョンです。 サポートされているバージョンは Python 2 と Python 3 です。デフォルトのバージョンは 2 です。
  • subnetwork は、環境が接続される Compute Engine のサブネットワークです。
    • ネットワークでカスタムモードのネットワークが使用されている場合、サブネットワークが必要です。
    • gcloud を使用して共有 VPC 環境を作成する場合は、セカンダリ IP 範囲の composer-podscomposer-services を使用する必要があります。Cloud Composer API を使用して、異なるセカンダリ範囲名を指定できます。サブネットワーク名も、projects/HOST_PROJECT_ID/regions/REGION_ID/subnetworks/SUBNET_ID の形式で相対的なリソース名として指定する必要があります。
  • service-account は、環境の GKE ノードを実行するサービス アカウントです。指定しない場合は、デフォルトの Compute Engine サービス アカウントが使用されます。
  • tags は、すべてのノード VM に適用されるインスタンス タグのリストです。タグは、ネットワーク ファイアウォールの有効なソースやターゲットを識別するために使用されます。リスト内の各タグは、RFC 1035 に準拠している必要があります。
  • web-server-machine-type は、Airflow ウェブサーバーを実行する Compute Engine インスタンスのマシンタイプです。マシンタイプによって、環境の CPU 数とメモリ容量が決まります。デフォルトのマシンタイプは composer-n1-webserver-2 です。 このパラメータで指定できる値は composer-n1-webserver-2composer-n1-webserver-4composer-n1-webserver-8 です。

次の例では、beta 環境ラベルを持つ n1-standard-2 マシンタイプを使用する us-central1 リージョンでサポートされる最新の Cloud Composer イメージ バージョンを実行する環境が作成されます。

gcloud beta composer environments create test-environment \
    --location us-central1 \
    --zone us-central1-f \
    --machine-type n1-standard-2 \
    --image-version composer-latest-airflow-x.y.z \
    --labels env=beta  

次の共有 VPC の例では、ホスト プロジェクトに環境を作成します。環境は us-central1 リージョンにあり、beta 環境ラベルが付けられた n1-standard-2 マシンタイプが使用されます。

gcloud beta composer environments create host-project-environment \
    --network vpc-network-name --subnetwork vpc-subnetwork-name \
    --location us-central1 \
    --zone us-central1-f \
    --machine-type n1-standard-2 \
    --labels env=beta  

プレビュー: カスタム メンテナンス時間枠

環境のメンテナンスを行うための Cloud Composer のカスタムの時間枠を設定できます。この時間枠中には環境が一時的に使用できなくなる可能性があるため、ワークフローを実行する可能性が低い時間帯(週末やオフピークなど)を選択します。メンテナンスの時間枠は、合計で週あたり 12 時間以上である必要があります。次のオプションのパラメータを使用します。

  • maintenance-window-start は、カスタム メンテナンス時間枠の開始時間を設定します。
  • maintenance-window-end は、カスタム メンテナンス時間枠の終了時間を設定します。
  • maintenance-window-recurrence は、メンテナンス時間枠の繰り返し日を設定します。

例:

gcloud beta composer environments create test-environment \
    --location us-central1 \
    --zone us-central1-f \
    --machine-type n1-standard-2 \
    --image-version composer-latest-airflow-x.y.z \
    --labels env=beta \
    --maintenance-window-start-time='2019-08-01T01:00:00Z' \
    --maintenance-window-end-time='2019-08-01T07:00:00Z' \
    --maintenance-window-recurrence='FREQ=WEEKLY;BYDAY=SA,SU'
  

これにより、毎週日曜日と土曜日の 01:00 から 07:00(UTC)の間にメンテナンス時間枠が設定された環境が作成されます。曜日(日曜日から土曜日)は次のように表されます: SU, MO, TU, WE, TH, FR, SAFREQ=DAILY を使用すると、メンテナンス時間枠を毎日繰り返すように設定できます。

API

Cloud Composer REST API を使用して新しい Cloud Composer 環境を作成するには、environments.create API リクエストを作成し、Environment リソースに構成情報を入力します。

Terraform

Terraform を使用してこの環境を構成するには、Terraform 構成に次のリソース ブロックを追加して terraform apply を実行します。

resource "google_composer_environment" "example-resource" {
  name   = "ENVIRONMENT_NAME"
  region = "LOCATION"
}

次のパラメータを指定します。

  • name、ここで ENVIRONMENT_NAME は環境の名前です。パターン ^[a-z](?:[-0-9a-z]{0,61}[0-9a-z])?$ と一致している必要があります。環境名は環境のサブコンポーネントの作成に使用されるため、Cloud Storage バケット名としても有効な名前を指定する必要があります。制限事項の一覧については、バケットの命名ガイドラインをご覧ください。
  • region、ここで LOCATION は、環境が配置される Compute Engine のリージョンです。Composer を使用できる場所にロケーションを指定してください。

追加のオプション パラメータの使用については、Terraform 引数リファレンスで定義されています。

次の例では、beta 環境ラベルを持つ n1-standard-2 マシンタイプを使用する us-central1 リージョンでサポートされる最新の Cloud Composer イメージ バージョンを実行する環境が作成されます。Terraform を使用してこの環境を構成するには、Terraform 構成に次のリソース ブロックを追加して terraform apply を実行します。

resource "google_composer_environment" "example-resource" {
  name   = "example-environment"
  region = "us-central1"

  config {
    node_config {
      zone = "us-central1-f"
      machine_type = "n1-standard-2"
    }
    software_config {
      image_version = "composer-latest-airflow-x.y.z"
    }
  }
  labels = {"env": "beta"}
}

次の共有 VPC の例では、ホスト プロジェクトに環境を作成します。環境は us-central1 リージョンにあり、beta 環境ラベルが付けられた n1-standard-2 マシンタイプが使用されます。Terraform を使用してこの環境を構成するには、Terraform 構成に次のリソース ブロックを追加して terraform apply を実行します。

resource "google_composer_environment" "example-resource" {
  name   = "host-project-environment"
  region = "us-central1"

  config {
    node_config {
      zone = "us-central1-f"
      machine_type = "n1-standard-2"
      network = "vpc-network-name"
      subnetwork = "vpc-subnetwork-name"
    }
    software_config {
      image_version = "composer-latest-airflow-x.y.z"
    }
  }
  labels = {"env": "beta"}
}

次のステップ