Créer des environnements

Cette page explique comment créer un environnement Cloud Composer.

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

  • Lors de la création de l'environnement, vous spécifiez un compte de service qui exécute les nœuds GKE de l'environnement. Par défaut, les environnements Cloud Composer s'exécutent à l'aide du compte de service Compute Engine par défaut géré par Google. Nous vous recommandons d'exécuter vos environnements avec un compte de service géré par l'utilisateur qui dispose d'un rôle spécifique pour les comptes de service Cloud Composer.

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

  • Les comptes de service gérés par Google s'affichent dans la stratégie IAM de votre projet et la console GCP. Par exemple, service-PROJECT_NUMBER@cloudcomposer-accounts.iam.gserviceaccount.com correspond au nom d'un compte de service géré par Google, appelé agent de service, utilisé par le service Cloud Composer pour gérer (créer , mettre à jour et supprimer) les environnements Cloud Composer de votre projet.

  • Si vous souhaitez qu'un environnement Cloud Composer d'un projet s'exécute en tant que compte de service géré par l'utilisateur dans un autre projet, vous devez configurer le compte de service géré par l'utilisateur sur travailler sur plusieurs projets.

    Dans le cadre de ce processus, vous devez attribuer le rôle de créateur de jetons du compte de service aux comptes de service gérés par Google suivants sur votre compte de service géré par l'utilisateur:

    • Compte de service Compute Engine par défaut (PROJECT_NUMBER-compute@developer.gserviceaccount.com)
    • Agent de service Cloud Composer (service-PROJECT_NUMBER@cloudcomposer-accounts.iam.gserviceaccount.com)
  • Pour déployer des environnements Cloud Composer dans un périmètre de sécurité, consultez la page Configurer VPC Service Controls. Lorsqu'il est utilisé avec Cloud Composer, VPC Service Controls présente plusieurs limites connues.

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 62 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. Une fois que vous avez spécifié le nombre de nœuds, il n'est pas modifié tant que vous n'avez pas mis à jour votre environnement.
    Location (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 qui exécute les nœuds GKE de l'environnement. 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 Cloud SQL, spécifiez les paramètres de l'instance Cloud SQL exécutant la base de données Airflow. Si vous ne spécifiez aucun paramètre, la valeur par défaut sera utilisée.

    Paramètre Description
    Type de machine Cloud SQL Type de machine pour l'instance Cloud SQL exécutant la base de données Airflow. Le type de machine détermine le nombre de processeurs et la quantité de mémoire de votre environnement.
  5. 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.

  6. Sous Configuration du serveur Web, spécifiez les plages d'adresses IP pouvant accéder au serveur Web Airflow pour votre environnement, ainsi qu'un type de machine pour le serveur Web Airflow.

    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.
    Type de machine du serveur Web Type de machine pour l'instance Compute Engine qui exécute le serveur Web Airflow. Le type de machine détermine le nombre de processeurs et la quantité de mémoire de votre environnement.
  7. (Aperçu) Sous Intervalles de maintenance, vous pouvez définir des intervalles de temps personnalisés pour que Cloud Composer puisse effectuer la maintenance de l'environnement. Votre environnement peut être temporairement indisponible pendant ces périodes. Par conséquent, choisissez des heures (par exemple, les week-ends ou les périodes creuses) lorsque vous êtes moins susceptible d'exécuter des workflows. Vos intervalles de maintenance doivent couvrir au moins 12 heures par semaine au total. Vous pouvez également définir ce paramètre après la création de l'environnement à partir de l'onglet Configuration de l'environnement de la page Détails de l'environnement.

  8. (Facultatif) Pour remplacer les valeurs par défaut dans le fichier de configuration Airflow (airflow.cfg), cliquez sur Ajouter une propriété de configuration Airflow.

  9. (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.

  10. (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.

  11. 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,61}[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 correspond au type de machine pour l'instance Cloud SQL exécutant la 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. Les valeurs possibles pour ce paramètre sont les suivantes: db-n1-standard-2, db-n1-standard-4, db-n1-standard-8 et db-n1-standard-16.
  • 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.
    • Prévisualiser:max-pods-per-node configure le nombre maximal de pods par nœud dans le cluster GKE alloué lors de la création de l'environnement. Cette réduction réduit la consommation d'adresses IP par le cluster Kubernetes Cloud Composer. Pour en savoir plus, consultez la page Optimiser l'allocation d'adresses IP. Cette valeur ne peut être définie que lors de la création de l'environnement, et seulement si l'environnement est un VPC natif. La plage autorisée est comprise entre 8 et 110. La valeur par défaut est 32. En mode Aperçu, ce paramètre nécessite l'utilisation de la commande gcloud beta composer.
  • 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. Une fois que vous avez spécifié le nombre de nœuds, il n'est pas modifié tant que vous n'avez pas mis à jour votre environnement.
  • 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 est le compte de service qui exécute les nœuds GKE de l'environnement. 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 pour l'instance Compute Engine qui exécute 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. Les valeurs possibles pour ce paramètre sont les suivantes: 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  

Aperçu: Intervalles de maintenance personnalisés

Vous pouvez définir des périodes personnalisées pour permettre à Cloud Composer d'effectuer la maintenance de l'environnement. Votre environnement peut être temporairement indisponible pendant ces périodes. Par conséquent, choisissez des heures (par exemple, les week-ends ou les périodes creuses) lorsque vous êtes moins susceptible d'exécuter des workflows. Vos intervalles de maintenance doivent couvrir au moins 12 heures par semaine au total. Utilisez les paramètres facultatifs suivants:

  • maintenance-window-start définit l'heure de début d'un intervalle de maintenance personnalisé.
  • maintenance-window-end définit l'heure de fin d'un intervalle de maintenance personnalisé.
  • maintenance-window-recurrence définit les jours pour lesquels l'intervalle de maintenance peut s'appliquer.

Exemple :

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='2019-08-01T01:00:00Z' \
    --maintenance-window-end='2019-08-01T07:00:00Z' \
    --maintenance-window-recurrence='FREQ=WEEKLY;BYDAY=SA,SU'
  

Cela crée un environnement avec un intervalle de maintenance entre 1:00 et 07:00 (UTC) tous les dimanches et samedis. Les jours de la semaine (du dimanche au samedi) sont représentés comme suit: SU, MO, TU, WE, TH, FR, SA. Si vous utilisez FREQ=DAILY, l'intervalle de maintenance se répètera tous les jours.

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 : ENVIRONMENT_NAME est le nom de l'environnement. Il doit correspondre au modèle ^[a-z](?:[-0-9a-z]{0,61}[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 : LOCATION est la région Compute Engine dans laquelle se trouve l'environnement. Assurez-vous que Composer est disponible dans la région que vous spécifiez.

L'utilisation de paramètres facultatifs supplémentaires est définie dans la documentation de référence des arguments 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"}
}

Étape suivante