環境の作成

このページでは、Cloud Composer 環境を作成する方法とその作成プロセス中にデフォルトの Airflow 環境設定をオーバーライドする方法について説明します。

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

始める前に

アクセス制御

  • Cloud Composer 環境を作成するには、composer.environments.create 権限が必要です。 詳細については、Cloud Composer のアクセス制御をご覧ください。

  • Cloud Composer のドメインで制限された共有は、現在ベータ版です。ドメインで制限された共有ポリシーを有効にしている場合、Cloud Composer 環境を作成するときにベータ版 API を使用する必要があります。ベータ版 API を使用して Cloud Composer 環境をデプロイする方法については、ベータ版機能のサポートを参照してください。

  • デフォルトでは、Cloud Composer 環境は Compute Engine のデフォルトのサービス アカウントとして実行されます。 環境の作成中にカスタムのサービス アカウントを指定できます。Cloud Composer 環境でリソースにアクセスするには、少なくとも composer.worker ロールによって付与される権限がサービス アカウントに必要です。プロジェクトの IAM ポリシーまたは GCP Console(service-<var>PROJECT_ID</var>@cloudcomposer-accounts.iam.gserviceaccount.com など)で、Google が所有する追加のサービス アカウントが表示される場合があります。利用可能な種類とロールについては、サービス アカウントをご覧ください。

  • タスクの実行中にカスタム サービス アカウントが Google Cloud プロジェクト内の他のリソースにアクセスする必要がある場合は、必要な権限をサービス アカウントに追加できます。あるいは、関連する認証情報を Airflow 接続に提供してから、演算子でその接続を参照することもできます。

  • 現在のところ、VPC Service Controls はベータ版です。セキュリティ境界内に Cloud Composer 環境をデプロイする方法については、VPC Service Controls の構成をご覧ください。

    詳細については、VPC Service Controls の既知の制限をご覧ください。

ベータ版機能

このセクションでは、現在ベータ版で提供されている機能を示します。

  • [ウェブサーバーのネットワーク アクセス制御]: この機能では、環境用の Airflow ウェブサーバーにアクセスできる IP 範囲を指定します。

新しい環境の作成

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

Console

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

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

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

    名前は先頭を小文字にして、その後に 63 文字以下の小文字、数字、ハイフンで構成します。末尾をハイフンにすることはできません。

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

    設定 説明
    ノード数 環境の実行に使用する Google Kubernetes Engine のノード数。デフォルトのノード数は 3 です。ノード数は、環境の作成後に変更できる唯一の Google Kubernetes Engine クラスタ設定です。
    ロケーション (必須)環境を作成する 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 であり、指定された範囲のリストに含める必要があります。
    サービス アカウント ノードの VM インスタンスによって使用される Google Cloud サービス アカウント。指定しない場合は、デフォルトの Compute Engine サービス アカウントが使用されます。
    タグ ノード VM インスタンスのすべてに適用されるインスタンス タグのリスト。タグは、ネットワーク ファイアウォールの有効なソースやターゲットを識別するために使用されます。リスト内の各タグは、RFC 1035 に準拠している必要があります。
    イメージのバージョン 環境に使用する Cloud Composer のバージョン(Cloud Composer と Airflow のバージョンを含む)。デフォルトのバージョン情報については、バージョン リストをご覧ください。
    Python バージョン 環境に使用する Python のバージョン。サポートされているバージョンは Python 2 と Python 3 です。デフォルトのバージョンは 3 です。
  4. [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 環境では必須です。
  5. (ベータ版)[ウェブサーバーのネットワーク アクセス制御] で、環境用の Airflow ウェブサーバーにアクセスできる IP 範囲を指定します。

    設定 説明
    すべての IP アドレスからのアクセスを許可する(デフォルト) すべての IP 範囲が Airflow ウェブサーバーにアクセスできます。
    特定の IP アドレスからのアクセスのみを許可する 特定の IP 範囲のみがウェブサーバーにアクセスできます。新しい範囲を追加するには、[IP 範囲を追加] をクリックします。範囲を削除するには、その行のゴミ箱ボタンをクリックします。すべての IP 範囲を拒否するには、すべての行を削除します。
  6. (省略可)Airflow 構成ファイル(airflow.cfg)でデフォルト値を変更またはオーバーライドするには、[Airflow 構成プロパティを追加] をクリックします。

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

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

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

  9. [作成] をクリック

gcloud

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

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

  • ENVIRONMENT_NAME は、環境の名前です。パターン ^[a-z](?:[-0-9a-z]{0,62}[0-9a-z])?$ と一致している必要があります。
  • LOCATION は、環境が配置される Compute Engine のリージョンです。Composer を使用できる場所にロケーションを指定してください。

次の引数はオプションです。

  • airflow-configs は、SECTION_NAME-PROPERTY_NAME=VALUE のリストです。Airflow の構成によってオーバーライドされます。セクション名とプロパティ名はハイフンで区切る必要があります。
  • 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 のセカンダリ範囲を構成します。
  • image-version は、composer-a.b.c-airflow-x.y.z の形式で環境で使用される composer-addon バージョンと Airflow バージョンです。バージョンのエイリアスとデフォルトのバージョン情報については、Cloud Composer のバージョ二ングをご覧ください。
  • labels は、環境とそのリソースに付けるユーザー指定のラベルです。
  • machine-type は、Compute Engine のマシンタイプです。 マシンタイプによって、環境の CPU 数とメモリ容量が決まります。デフォルトのマシンタイプは n1-standard-1 です。 また、--zone フラグも必要です。
  • network は、マシンの通信に使用する Virtual Private Cloud ネットワークです。
    • ネットワークは、サブネットワークを指定するために必要です。指定しない場合は、デフォルトのネットワークが使用されます。
    • 共有 VPC を使用する場合は、ネットワークの相対的なリソース名projects/HOST_PROJECT_ID/global/networks/NETWORK_ID の形式で指定する必要があります。共有 VPC サブネットワークの要件については、以下の subnetwork をご覧ください。
  • node-count は、環境を実行するために使用する GKE ノードの数です。デフォルトのノード数は 3 です。ノード数は、環境の作成後に変更できる唯一の Google Kubernetes Engine クラスタ設定です。
  • 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 は、ノードの VM インスタンスによって使用される Google Cloud サービス アカウントです。指定しない場合は、デフォルトの Compute Engine サービス アカウントが使用されます。
  • tags は、すべてのノード VM に適用されるインスタンス タグのリストです。タグは、ネットワーク ファイアウォールの有効なソースやターゲットを識別するために使用されます。リスト内の各タグは、RFC 1035 に準拠している必要があります。

次の例では、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  

API

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

メール通知を構成する

SendGrid メールサービスの構成

通知を受け取るには、SendGrid メールサービスを介してメールを送信するように環境変数を構成します。

  1. まだ登録していない場合は、Google Cloud Console を介して SendGrid に登録し、API キーを作成します。Google Cloud デベロッパーは、1 か月あたり 12,000 件の無料メールを利用できます。

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

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

  3. [ノード構成] で [環境変数を追加] をクリックします。

  4. 次の環境変数を入力します。

    名前
    SENDGRID_MAIL_FROM From: に指定するメールアドレス(noreply-composer@ など)。
    SENDGRID_API_KEY SendGrid API キー。
  5. SendGrid 構成をテストする手順は次のとおりです。

    1. EmailOperator を使用するテスト DAG を作成します。
    2. 環境に DAG をアップロードし、EmailOperator タスクが成功することを確認します。
    3. SendGrid の認証情報を使用して SendGrid にログインします。
    4. SendGrid UI で、[Activity] ページに移動します。
    5. メールのリストを検索します。SendGrid がメールを処理して配信したことを確認します。
    6. メールが処理、配信されていない場合は、次の手順を行います。
      • Sendgrid の構成を確認します。
      • 環境変数の SENDGRID_MAIL_FROMSENDGRID_API_KEY が正しく設定されていることを確認します。
      • メール クライアントのスパムフィルタを確認します。

サードパーティの SMTP サービスの構成

サードパーティの SMTP サービスを介してメールを送信するには、email_backend Airflow 構成をオーバーライドする必要があります。

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

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

  2. [Airflow 構成のオーバーライド] で、[Airflow 構成のオーバーライドを追加] をクリックします。
  3. 次の構成プロパティを入力します。

    セクション キー
    email email_backend airflow.utils.email.send_email_smtp
    smtp smtp_host SMTP サーバーのホスト名。
    smtp smtp_user SMTP サーバー上のユーザー名。
    smtp smtp_port ポート 25 以外のポート。ポート 25 はブロックされています。
    smtp smtp_password Airflow のデフォルトの SMTP パスワード。新しいパスワードは構成できません。
    smtp smtp_mail_from From: に指定するメールアドレス(noreply-composer@ など)。
    smtp smtp_starttls セキュリティを強化するには、True に設定します。
    smtp smtp_ssl セキュリティを強化するには、True に設定します。

その他の SMTP 構成については、お使いの Airflow リリースの default_airflow.cfg をご覧ください。

Airflow 構成をオーバーライドする

環境を作成または更新する際に、Apache Airflow の構成プロパティをオーバーライドできます。一部のプロパティはブロックされています。

Console

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

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

  2. [Airflow 構成のオーバーライド] で、[Airflow 構成のオーバーライドを追加] をクリックします。

  3. 構成の、セクションキー、新しいを入力します。

例:

セクション キー
webserver dag_orientation RL

gcloud

環境を作成するときに Airflow 構成をオーバーライドするコードは、次のとおりです。

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --airflow-configs=KEY=VALUE,KEY=VALUE,...

ここで

  • ENVIRONMENT_NAME は、環境の名前です。
  • LOCATION は、環境が配置される Compute Engine のリージョンです。
  • KEY=VALUE は、ハイフンで区切られた構成のセクションとプロパティ名(core-print_stats_interval など)とそれに対応する値です。

例:

gcloud composer environments create test-environment \
    --location us-central1 \
    --airflow-configs=core-load_example=True,webserver-dag_orientation=TB 

オペレーションが完了すると、コマンドは終了します。待機しないようにするには、--async フラグを指定してください。その他の例については、gcloud composer 環境の更新リファレンス ページをご覧ください。

API

Cloud Composer 環境の作成中に Cloud Composer REST API を使用して Airflow のプロパティをオーバーライドするには、environments.create リクエストを作成するときに、Environment リソースのオプション airflowConfigOverrides フィールドに入力します。

次のステップ