Créer des environnements

Cette page explique comment créer un environnement Cloud Composer et remplacer les paramètres d'environnement Airflow par défaut lors du processus de création.

Un environnement Cloud Composer exécute le logiciel Apache Airflow. Lorsque vous créez un environnement dans un projet Google Cloud (GCP), vous pouvez spécifier plusieurs paramètres, tels que le type de machine Compute Engine ou le nombre de nœuds dans le cluster.

Avant de commencer

Contrôle des accès

  • Les autorisations suivantes sont requises pour créer des environnements Cloud Composer : (1) composer.environments.create et (2) iam.serviceAccounts.actAs sur le compte de service sous lequel l'environnement sera exécuté. Pour en savoir plus, reportez-vous à la section Contrôle des accès Cloud Composer.

  • Par défaut, les environnements Cloud Composer s'exécutent en tant que compte de service par défaut de Compute Engine. Lors de la création de l'environnement, vous pouvez spécifier un compte de service personnalisé. Ce compte de service nécessite au minimum les autorisations fournies par le rôle composer.worker pour accéder aux ressources dans l'environnement Cloud Composer. Vous devez également être autorisé à "agir en tant que" compte de service en activant l'autorisation iam.serviceAccounts.actAs sur le compte de service ou le projet contenant l'environnement. Assurez-vous de détenir l'un des rôles qui incluent cette autorisation, par exemple Utilisateur du compte de service, Propriétaire ou Éditeur. Pour en savoir plus, consultez la section Comprendre les comptes de service.

  • Si votre compte de service personnalisé doit accéder à d'autres ressources de votre projet Google Cloud lors de l'exécution d'une tâche, vous pouvez lui attribuer les rôles nécessaires. Vous pouvez également fournir les identifiants pertinents sous forme de connexion Airflow, puis référencer la connexion dans l'opérateur.

  • Il est possible que des comptes de service supplémentaires appartenant à Google apparaissent dans la stratégie IAM de votre projet ou dans la console GCP (par exemple, service-<var>PROJECT_ID</var>@cloudcomposer-accounts.iam.gserviceaccount.com). Pour plus d'informations sur les types et les rôles disponibles, consultez la page Comptes de service.

  • Le partage restreint de domaine pour Cloud Composer est actuellement proposé en version bêta. Si la règle de partage restreint de domaine est activée, vous devez utiliser l'API bêta lors de la création d'un environnement Cloud Composer. Pour savoir comment déployer un environnement Cloud Composer à l'aide de l'API bêta, consultez la page Compatibilité des fonctionnalités en version bêta.

  • La compatibilité de VPC Service Controls est actuellement proposée en version bêta. Consultez la page Configurer VPC Service Controls pour savoir comment déployer des environnements Cloud Composer dans un périmètre de sécurité. Pour plus d'informations, consultez les limites connues de VPC Service Controls.

Fonctionnalités en version bêta

Cette section répertorie les fonctionnalités actuellement disponibles en version bêta.

  • Contrôle de l'accès réseau au serveur Web : cette fonctionnalité vous permet de spécifier les plages d'adresses IP pouvant accéder au serveur Web Airflow pour votre environnement.

  • Type de machine pour le serveur Web Airflow : ce paramètre vous permet d'indiquer le type de machine virtuelle Google App Engine qui exécute le serveur Web Airflow.

  • Type de machine pour la base de données Airflow : ce paramètre vous permet de spécifier le type de machine sur lequel l'instance Cloud SQL exécutera la base de données Airflow.

Créer un environnement

Pour créer un environnement Cloud Composer, procédez comme suit :

Console

  1. Ouvrez la page Créer un environnement dans Google Cloud Console.

    Ouvrir la page Créer un environnement

  2. Attribuez un nom à l'environnement.

    Le nom doit commencer par une lettre minuscule suivie d'un maximum de 63 caractères (lettres minuscules, chiffres ou traits d'union) et ne peut pas se terminer par un trait d'union. Le nom de l'environnement est utilisé pour créer des sous-composants pour l'environnement. Vous devez donc indiquer un nom également valide pour les buckets Cloud Storage. Pour obtenir une liste des restrictions, consultez la page Consignes de dénomination des buckets.

  3. Sous Configuration du nœud, spécifiez les paramètres des nœuds dans le cluster Google Kubernetes Engine. Si vous ne spécifiez aucun paramètre, la valeur par défaut sera utilisée.

    Paramètre Description
    Nombre de nœuds Nombre de nœuds Google Kubernetes Engine nécessaires à l'exécution de l'environnement. La valeur par défaut est de 3 nœuds. Le nombre de nœuds constitue le seul paramètre de cluster Google Kubernetes Engine que vous pouvez modifier une fois l'environnement créé.
    Emplacement (Obligatoire) Région Compute Engine dans laquelle l'environnement est créé.
    Suffixe de zone Zone Compute Engine dans laquelle les instances de machine virtuelle qui exécutent Apache Airflow sont créées. Si elle n'est pas spécifiée, une zone aléatoire dans l'emplacement est sélectionnée.
    Type de machine Type de machine Compute Engine utilisé pour les instances de cluster. Le type de machine détermine le nombre de processeurs et la quantité de mémoire de votre environnement. Le type de machine par défaut est n1-standard-1.
    Taille du disque Taille du disque en Go utilisée pour les instances de machine virtuelle de nœuds. La taille minimale est de 20 Go. La taille par défaut est de 100 Go.
    Champs d'application OAuth Ensemble des champs d'application d'API Google disponibles sur toutes les instances de VM de nœuds. La valeur par défaut est https://www.googleapis.com/auth/cloud-platform et doit figurer dans la liste des champs d'application spécifiés.
    Compte de service Compte de service Google Cloud que les instances de VM de nœud doivent utiliser. Le compte de service Compute Engine par défaut est utilisé s'il n'est pas spécifié.
    Tags Liste des tags d'instances appliqués à toutes les instances de VM de nœuds. Les tags servent à identifier les sources et les cibles valides pour les pare-feu de réseau. Chaque tag de la liste doit être conforme au format RFC 1035.
    Version de l'image Version de Cloud Composer à utiliser pour votre environnement (y compris les versions Cloud Composer et Airflow). Pour obtenir des informations sur les versions par défaut, consultez la page Liste des versions.
    Version Python Version de Python à utiliser pour votre environnement. Les versions compatibles sont Python 2 et Python 3. La version par défaut est 3.
  4. Sous Configuration du réseau, spécifiez les paramètres réseau du cluster Google Kubernetes Engine. Si vous ne spécifiez aucun paramètre, la valeur par défaut sera utilisée.

    Paramètre Description
    Activer le VPC natif (utilisation d'une adresse IP d'alias) Crée un cluster GKE de VPC natif avec des adresses IP d'alias pour votre environnement. La valeur par défaut est un cluster GKE basé sur le routage. Obligatoire pour un environnement Cloud Composer d'adresse IP privée.
    Réseau Réseau de cloud privé virtuel utilisé pour les communications entre les machines. Le réseau est requis pour la spécification d'un sous-réseau. S'il n'est pas spécifié, le réseau par défaut est utilisé. Le VPC partagé nécessite un projet hôte.
    Sous-réseau Sous-réseau de cloud privé virtuel utilisé pour les communications entre les machines. Si votre réseau utilise un réseau en mode personnalisé, le sous-réseau est requis.
    Attribution d'adresses IP de pods Plage secondaire permettant d'attribuer les adresses IP des pods dans le cluster GKE. Si elle n'est pas spécifiée, une plage secondaire est créée. Ce paramètre est définitif.
    Attribution d'adresses IP de services Plage secondaire permettant de réserver de l'espace pour les services Cloud Composer. Si elle n'est pas spécifiée, une plage secondaire est créée. Ce paramètre est définitif.
    Environnement d'adresse IP privée Active un environnement Cloud Composer d'adresse IP privée. Désactivé par défaut.
    Accès au maître GKE à l'aide d'une adresse IP externe Active l'accès public au cluster maître GKE. Nécessite un environnement d'adresse IP privée.
    Plage d'adresses IP du maître GKE Plage d'adresses IP privées RFC 1918 pour le VPC du maître. Si elle n'est pas spécifiée, la valeur par défaut 172.16.0.0/28 est utilisée. Obligatoire pour l'environnement d'adresse IP privée.

    Assurez-vous que les plages secondaires sont suffisamment grandes pour s'adapter à la taille et à la croissance prévue du cluster. Par exemple, les préfixes de réseau des plages secondaires pour un environnement Cloud Composer à trois nœuds ne doivent pas dépasser les valeurs suivantes :

    • Pods : /22
    • Services : /27

    Consultez la section Créer un cluster de VPC natif pour obtenir des instructions sur la configuration des plages secondaires pour les pods et les services.

  5. (Version bêta) Sous Contrôle de l'accès réseau au serveur Web, spécifiez les plages d'adresses IP pouvant accéder au serveur Web Airflow pour votre environnement.

    Paramètre Description
    Autoriser l'accès depuis toute adresse IP (réglage par défaut) Toutes les plages d'adresses IP peuvent accéder au serveur Web Airflow.
    Autoriser l'accès uniquement depuis des adresses IP spécifiques Seules des plages d'adresses IP spécifiques peuvent accéder au serveur Web. Pour ajouter une nouvelle plage, cliquez sur Ajouter une plage d'adresses IP. Pour supprimer une plage, cliquez sur le bouton de la corbeille correspondant à cette ligne. Pour refuser toutes les plages d'adresses IP, supprimez toutes les lignes.
  6. (Facultatif) Pour modifier ou remplacer les valeurs par défaut du fichier de configuration Airflow (airflow.cfg), cliquez sur Ajouter une propriété de configuration Airflow.

  7. (Facultatif) Pour configurer les variables d'environnement, cliquez sur Ajouter une variable d'environnement. Reportez-vous à la page Variables d'environnement pour connaître les conditions requises.

  8. (Facultatif) Pour ajouter un libellé, cliquez sur Ajouter des libellés.

    Les clés et les valeurs de libellé ne peuvent contenir que des lettres, des chiffres, des tirets et des traits de soulignement. Les clés de libellé doivent commencer par une lettre ou un chiffre.

  9. Cliquez sur Créer.

gcloud

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

Les paramètres suivants sont requis :

  • ENVIRONMENT_NAME est le nom de l'environnement. Il doit correspondre au modèle ^[a-z](?:[-0-9a-z]{0,62}[0-9a-z])?$. Le nom de l'environnement est utilisé pour créer des sous-composants pour l'environnement. Vous devez donc indiquer un nom également valide pour les buckets Cloud Storage. Pour obtenir une liste des restrictions, consultez la page Consignes de dénomination des buckets.
  • LOCATION est la région Compute Engine dans laquelle se trouve l'environnement. Assurez-vous que l'emplacement que vous spécifiez est celui où Composer est disponible.

Les paramètres ci-dessous sont facultatifs :

  • airflow-configs correspond à la liste des remplacements de configuration Airflow SECTION_NAME-PROPERTY_NAME=VALUE. Le nom de la section et le nom de la propriété doivent être séparés par un trait d'union.
  • cloud-sql-machine-type est un type de machine pour l'instance Cloud SQL utilisée comme base de données Airflow. Le type de machine détermine le nombre de processeurs et la quantité de mémoire de votre environnement. Le type de machine par défaut est db-n1-standard-2. Ce paramètre est en version bêta et nécessite la commande gcloud beta composer environments create. Les valeurs possibles pour ce paramètre sont : db-n1-standard-2, db-n1-standard-4, db-n1-standard-8 et db-n1-standard-16. Les spécifications de ces machines sont disponibles sur la page Cloud SQL.
  • disk-size est la taille de disque en Go utilisée pour les VM de nœud. La taille minimale est de 20 Go. La taille de disque par défaut est de 100 Go.
  • env-variables est une liste de variables d'environnement NAME=VALUE définies dans les processus de programmeur, de nœud de calcul et de serveur Web Airflow.
  • enable-private-environment active un environnement Cloud Composer d'adresse IP privée.
    • master-ipv4-cidr est la plage d'adresses IP privées RFC 1918 pour le VPC du maître. Obligatoire lorsque enable-private-environment est vrai.
  • enable-private-endpoint active l'accès public au maître de cluster GKE. Nécessite enable-private-environment.
  • enable-ip-alias active le VPC natif à l'aide d'adresses IP d'alias. Obligatoire lorsque enable-private environment est vrai ou pour configurer les plages secondaires des pods et des services :
    • cluster-secondary-range-name ou cluster-ipv4-cidr configure la plage secondaire des pods.
    • services-secondary-range-name ou services-ipv4-cidr configure la plage secondaire des services.
  • image-version correspond à la version de composer-addon et à la version d'Airflow à utiliser pour votre environnement, au format composer-a.b.c-airflow-x.y.z. Pour obtenir des informations sur les alias de version et sur les versions par défaut, consultez la page Gestion des versions Cloud Composer.
  • labels correspond aux libellés spécifiés par l'utilisateur qui sont associés à l'environnement et à ses ressources.
  • machine-type correspond au type de machine Compute Engine. Le type de machine détermine le nombre de processeurs et la quantité de mémoire de votre environnement. Le type de machine par défaut est n1-standard-1.
  • network est le réseau cloud privé virtuel utilisé pour les communications entre les machines.
    • Le réseau est requis pour la spécification d'un sous-réseau. S'il n'est pas spécifié, le réseau par défaut est utilisé.
    • Lorsque vous utilisez un VPC partagé, le nom de ressource relatif du réseau doit être indiqué au format projects/HOST_PROJECT_ID/global/networks/NETWORK_ID. Pour connaître les exigences de sous-réseau du VPC partagé, reportez-vous au paramètre subnetwork ci-dessous.
  • node-count correspond au nombre de nœuds GKE utilisés pour exécuter l'environnement. Le nombre de nœuds par défaut est de 3. Le nombre de nœuds constitue le seul paramètre de cluster Google Kubernetes Engine que vous pouvez modifier une fois l'environnement créé.
  • oauth-scopes correspond à l'ensemble des champs d'application d'API Google disponibles sur toutes les VM de nœud. Le champ d'application OAuth par défaut est https://www.googleapis.com/auth/cloud-platform et doit figurer dans la liste des champs d'application si elle est spécifiée.
  • python-version correspond à la version Python à utiliser pour votre environnement. Les versions compatibles sont Python 2 et Python 3. La version par défaut est 2.
  • subnetwork est le sous-réseau Compute Engine auquel l'environnement est connecté.
    • Si votre réseau utilise un réseau en mode personnalisé, le sous-réseau est requis.
    • Lors de la création d'un environnement VPC partagé à l'aide de gcloud, vous devez utiliser les plages d'adresses IP secondaires composer-pods et composer-services. Vous pouvez spécifier différents noms de plage secondaire à l'aide de l'API Cloud Composer. Le nom du sous-réseau doit également être spécifié en tant que nom de ressource relatif au format projects/HOST_PROJECT_ID/regions/REGION_ID/subnetworks/SUBNET_ID.
  • service-account correspond au compte de service Google Cloud que les instances de VM de nœud doivent utiliser. Le compte de service Compute Engine par défaut est utilisé s'il n'est pas spécifié.
  • tags correspond à la liste des tags d'instance appliqués à toutes les VM de nœud. Les tags servent à identifier les sources et les cibles valides pour les pare-feu de réseau. Chaque tag de la liste doit être conforme au format RFC 1035.
  • web-server-machine-type est un type de machine utilisé pour exécuter le serveur Web Airflow. Le type de machine détermine le nombre de processeurs et la quantité de mémoire de votre environnement. Le type de machine par défaut est composer-n1-webserver-2. Ce paramètre est en version bêta et nécessite la commande gcloud beta composer environments create. Les valeurs possibles pour ce paramètre sont composer-n1-webserver-2, composer-n1-webserver-4 et composer-n1-webserver-8.

L'exemple suivant crée un environnement exécutant la dernière version d'image de Cloud Composer compatible dans la région us-central1 qui utilise le type de machine n1-standard-2 avec un libellé d'environnement beta :

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  

L'exemple de VPC partagé suivant crée un environnement dans le projet hôte. L'environnement se trouve dans la région us-central1 et utilise le type de machine n1-standard-2 avec un libellé d'environnement beta :

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

Pour créer un environnement Cloud Composer avec l'API REST Cloud Composer, effectuez une requête API environments.create, en spécifiant vos informations de configuration dans le champ de la ressource Environment.

Terraform

Pour configurer cet environnement à l'aide de Terraform, ajoutez le bloc de ressources suivant à votre configuration Terraform, puis exécutez terraform apply.

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

Les paramètres suivants sont requis :

  • name, où ENVIRONMENT_NAME est le nom de l'environnement. Il doit correspondre au modèle ^[a-z](?:[-0-9a-z]{0,62}[0-9a-z])?$ Le nom de l'environnement est utilisé pour créer des sous-composants pour l'environnement. Vous devez donc indiquer un nom également valide pour les buckets Cloud Storage. Pour obtenir une liste des restrictions, consultez la page Consignes de dénomination des buckets.
  • region, où LOCATION est la région Compute Engine dans laquelle se trouve l'environnement. Assurez-vous que l'emplacement que vous spécifiez est celui où Composer est disponible.

L'utilisation de paramètres facultatifs supplémentaires est définie dans la documentation de référence sur l'argument Terraform.

L'exemple suivant crée un environnement exécutant la dernière version d'image de Cloud Composer compatible dans la région us-central1 qui utilise le type de machine n1-standard-2 avec un libellé d'environnement beta. Pour configurer cet environnement à l'aide de Terraform, ajoutez le bloc de ressources suivant à votre configuration Terraform, puis exécutez 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"}
}

L'exemple de VPC partagé suivant crée un environnement dans le projet hôte. L'environnement se trouve dans la région us-central1 et utilise le type de machine n1-standard-2 avec un libellé d'environnement beta. Pour configurer cet environnement à l'aide de Terraform, ajoutez le bloc de ressources suivant à votre configuration Terraform, puis exécutez 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"}
}

Configurer des notifications par e-mail

Configurer des services de messagerie SendGrid

Pour recevoir des notifications, configurez vos variables d'environnement pour l'envoi d'e-mails via le service de messagerie SendGrid.

  1. Si vous ne l'avez pas encore fait, inscrivez-vous à SendGrid via Google Cloud Console et créez une clé API. En tant que développeur Google Cloud, vous pouvez démarrer avec 12 000 e-mails gratuits par mois.

  2. Dans Cloud Console, ouvrez la page Créer un environnement.

    Ouvrir la page Créer un environnement

  3. Sous Configuration des nœuds, cliquez sur Ajouter une variable d'environnement.

  4. Entrez les variables d'environnement suivantes :

    Nom Valeur
    SENDGRID_MAIL_FROM Adresse e-mail de l'expéditeur, telle que noreply-composer@<your-domain>.
    SENDGRID_API_KEY Clé API SendGrid.
  5. Pour tester la configuration SendGrid, procédez comme suit :

    1. Créez un DAG de test utilisant EmailOperator.
    2. Importez le DAG dans votre environnement et assurez-vous que la tâche EmailOperator est bien exécutée.
    3. Connectez-vous à SendGrid à l'aide de vos identifiants SendGrid.
    4. Dans l'interface utilisateur de SendGrid, accédez à la page "Activité".
    5. Cherchez l'e-mail dans la liste. Vous devriez constater que SendGrid a traité et envoyé l'e-mail.
    6. Si l'e-mail n'est pas traité ni distribué, effectuez les opérations suivantes :
      • Vérifiez les configurations Sendgrid.
      • Vérifiez que les variables d'environnement SENDGRID_MAIL_FROM et SENDGRID_API_KEY sont correctes.
      • Vérifiez le filtre antispam dans votre client de messagerie.

Configurer des services SMTP tiers

Pour envoyer un e-mail via un service SMTP tiers, vous devez remplacer la configuration email_backend Airflow.

  1. Ouvrez la page Créer un environnement.

    Ouvrir la page Créer un environnement

  2. Sous Remplacements de configuration Airflow, cliquez sur Ajouter un remplacement de configuration Airflow.
  3. Saisissez les propriétés de configuration suivantes :

    Section Clé Valeur
    email email_backend airflow.utils.email.send_email_smtp
    smtp smtp_host Nom d'hôte du serveur SMTP.
    smtp smtp_user Nom d'utilisateur sur le serveur SMTP.
    smtp smtp_port Un port autre que le port 25. Le port 25 est bloqué.
    smtp smtp_password Mot de passe SMTP par défaut pour Airflow. Vous ne pouvez pas configurer de nouveau mot de passe.
    smtp smtp_mail_from Adresse e-mail de l'expéditeur, telle que noreply-composer@.
    smtp smtp_starttls Pour plus de sécurité, définissez la valeur sur True.
    smtp smtp_ssl Pour plus de sécurité, définissez la valeur sur True.

Pour les autres configurations SMTP, consultez le fichier default_airflow.cfg de votre version Airflow.

Remplacer les configurations Airflow

Lors de la création ou de la mise à jour d'un environnement, vous pouvez remplacer les propriétés de configuration d'Apache Airflow. Certaines propriétés sont bloquées.

Console

  1. Ouvrez la page Créer un environnement.

    Ouvrir la page Créer un environnement

  2. Sous Remplacements de configuration Airflow, cliquez sur Ajouter un remplacement de configuration Airflow.

  3. Renseignez la Section, la Clé et la nouvelle Valeur pour la configuration.

Exemple :

Section Clé Valeur
webserver dag_orientation RL

gcloud

Pour remplacer les configurations Airflow lors de la création d'un environnement, procédez comme suit :

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

où :

  • ENVIRONMENT_NAME est le nom de l'environnement.
  • LOCATION est la région Compute Engine dans laquelle se trouve l'environnement.
  • KEY=VALUE est la section de configuration et le nom de la propriété séparés par un trait d'union (par exemple, core-print_stats_interval), ainsi que la valeur correspondante.

Exemple :

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

La commande prend fin une fois l'opération terminée. Pour éviter d'attendre, utilisez l'option --async. Consultez la page gcloud composer environments update de la documentation de référence pour obtenir des exemples supplémentaires.

API

Pour remplacer les propriétés Airflow lors de la création de l'environnement Cloud Composer à l'aide de l'API REST Cloud Composer, remplissez le champ airflowConfigOverrides facultatif de la ressource Environment lors de la création de la requête environments.create.

Étape suivante