Connecter un environnement à un réseau VPC

Managed Airflow (3e génération) | Managed Airflow (2e génération) | Managed Airflow (ancienne 1re génération)

Cette page explique comment votre environnement peut accéder à un réseau VPC dans Managed Airflow (3e génération). Elle fournit des instructions pour connecter un environnement à un réseau VPC et décrit comment désactiver une connexion précédemment configurée.

À propos de l'accès au réseau VPC

Dans Managed Airflow (génération 3), vous pouvez activer l'accès à un réseau VPC pour un environnement.

Si vous activez l'accès à un réseau VPC pour un environnement :

  • Les composants Airflow de votre environnement peuvent accéder aux points de terminaison de réseau privé dans votre réseau VPC. Par exemple, votre code DAG peut accéder aux ressources situées dans votre réseau VPC via une connexion Airflow configurée.

  • Si votre environnement utilise la mise en réseau avec adresse IP privée, tout le trafic est acheminé vers votre réseau VPC, à l'exception du trafic vers les API, services et domaines Google disponibles pour les environnements avec adresse IP privée via l'accès privé à Google. Cette méthode permet également à vos composants Airflow de se connecter aux adresses IP publiques utilisées en privé configurées dans GKE, car le trafic sera acheminé via le réseau VPC au lieu d'être envoyé sur l'Internet public.

  • Selon la façon dont vous configurez votre réseau VPC, un environnement d'adresse IP privée peut accéder à Internet via votre réseau VPC.

  • Les zones DNS privées définies dans votre réseau VPC sont automatiquement disponibles pour les composants Airflow de votre environnement.

  • L'environnement réserve deux adresses IP dans votre sous-réseau VPC et utilise deux adresses IP supplémentaires lors des opérations de maintenance et des mises à niveau. Assurez-vous que quatre adresses IP par environnement sont disponibles dans votre sous-réseau VPC.

Managed Airflow utilise un rattachement de réseau pour connecter votre environnement à un réseau VPC :

  • Si vous spécifiez un réseau et un sous-réseau VPC, Managed Airflow crée un rattachement de réseau dans votre projet. Cette pièce jointe est supprimée après que vous avez supprimé un environnement, désactivé la connexion à un réseau VPC ou écrasé les paramètres de connexion VPC.

  • Si vous spécifiez un rattachement réseau existant, il doit se trouver dans le même projet que l'environnement. Ce rattachement n'est pas supprimé lorsque vous supprimez un environnement, désactivez une connexion ou écrasez les paramètres de connexion VPC.

  • Dans un réseau VPC partagé :

    • Assurez-vous d'avoir configuré le réseau VPC partagé pour Managed Airflow. Consultez Configurer un VPC partagé pour en savoir plus sur la configuration des projets et des autorisations pour Managed Airflow.

    • Une fois le réseau VPC partagé configuré, vous pouvez connecter votre environnement à un réseau VPC du projet hôte. Si vous utilisez un rattachement de réseau existant, il doit être créé dans le projet de service (où se trouve l'environnement) et rattaché à un réseau VPC partagé.

Limites de l'appairage DNS transitif dans Managed Airflow (3e génération)

Les limites du peering DNS transitif s'appliquent à un environnement Managed Airflow (3e génération) de la manière suivante :

  • Cloud DNS limite le nombre de sauts transitifs à un, ce qui signifie que seuls deux sauts sont acceptés au total.
  • Dans Managed Airflow (génération 3), les composants de votre environnement s'exécutent dans le projet locataire et communiquent avec le projet dans lequel se trouve l'environnement via un peering DNS. Le saut transitoire est utilisé par le peering DNS du projet locataire. Il est donc possible de n'utiliser qu'un seul saut au total.

À propos de la plage d'adresses IP internes de l'environnement

Les environnements Managed Airflow (génération 3) nécessitent plusieurs adresses IP pour leurs composants qui s'exécutent dans le projet locataire, tels que le cluster de votre environnement et le proxy Cloud SQL. Ces adresses IP sont issues de la plage d'adresses IP internes de l'environnement.

  • La plage d'adresses IP internes par défaut est 100.64.128.0/20.

  • Vous pouvez spécifier une autre plage d'adresses IP internes lorsque vous créez un environnement. Cette plage doit utiliser un masque /20.

  • Vous ne pouvez pas modifier la plage d'adresses IP internes d'un environnement existant.

La plage d'adresses IP internes interagit avec votre réseau VPC de la manière suivante :

  • La plage d'adresses IP internes ne doit pas être en conflit avec le sous-réseau VPC auquel l'environnement Managed Airflow est connecté. Il n'est pas possible d'activer une connexion avec un sous-réseau VPC qui chevauche la plage d'adresses IP internes.

  • Si la plage d'adresses IP internes d'un environnement chevauche les plages de votre réseau VPC, les points de terminaison de votre réseau VPC dont les adresses IP se chevauchent ne sont pas accessibles depuis l'environnement.

    Par exemple, si la plage interne est 100.64.128.0/20, toute requête envoyée au point de terminaison 100.64.128.1 de votre réseau VPC échoue, car la requête ne quitte pas le projet locataire.

  • La plage d'adresses IP internes n'est pas réservée. Vous pouvez utiliser la même plage d'adresses IP internes pour plusieurs environnements sans aucune configuration supplémentaire, car les réseaux VPC internes utilisés par les différents environnements sont séparés.

  • Vous pouvez utiliser les adresses IP de la plage interne à d'autres fins, à condition que les DAG et les tâches de votre environnement ne leur envoient pas de requêtes.

Se connecter à un réseau VPC

Console

  1. Dans la console Google Cloud , accédez à la page Environnements.

    Accéder à la page Environnements

  2. Dans la liste des environnements, cliquez sur le nom de votre environnement. La page Détails de l'environnement s'ouvre.

  3. Accédez à l'onglet Configuration de l'environnement.

  4. Dans la section Configuration réseau, recherchez l'élément Rattachement réseau et cliquez sur Modifier.

  5. Dans la boîte de dialogue Association réseau :

    • Pour créer un rattachement de réseau, dans la liste Rattachement de réseau, sélectionnez Créer un rattachement de réseau. Dans les listes Réseau et Sous-réseau, sélectionnez un réseau VPC et un sous-réseau.

    • Pour utiliser un rattachement de réseau existant, sélectionnez-le dans la liste Rattachement de réseau.

  6. Cliquez sur Enregistrer.

gcloud

Les arguments Google Cloud CLI suivants spécifient les paramètres de connexion au réseau VPC :

  • --network : ID du réseau VPC.
  • --subnetwork : ID du sous-réseau VPC.
  • --network-attachment : utilisez plutôt un rattachement de réseau existant.

Nouveau rattachement de réseau

Pour connecter votre environnement à un réseau VPC via une nouvelle pièce jointe réseau, exécutez la commande Google Cloud CLI suivante :

gcloud beta composer environments update ENVIRONMENT_NAME \
  --location LOCATION \
  --network NETWORK_ID \
  --subnetwork SUBNETWORK_ID

Remplacez les éléments suivants :

  • ENVIRONMENT_NAME : nom de l'environnement
  • LOCATION : région où se trouve l'environnement
  • NETWORK_ID : ID du réseau VPC
  • SUBNETWORK_ID : ID du sous-réseau VPC

Exemple :

gcloud beta composer environments update example-environment \
  --location us-central1 \
  --network projects/example-project/global/networks/example-network \
  --subnetwork projects/example-project/regions/us-central1/subnetworks/example-subnetwork

Rattachement de réseau existant

Pour connecter votre environnement à un réseau VPC via une nouvelle pièce jointe réseau, exécutez la commande Google Cloud CLI suivante :

gcloud beta composer environments update ENVIRONMENT_NAME \
  --location LOCATION \
  --network-attachment NETWORK_ATTACHMENT_ID

Remplacez les éléments suivants :

  • ENVIRONMENT_NAME : nom de l'environnement
  • LOCATION : région où se trouve l'environnement
  • NETWORK_ATTACHMENT_ID : rattachement de réseau au format projects/{project}/regions/{region}/networkAttachments/{networkAttachment}.

Exemple :

gcloud beta composer environments update example-environment \
  --location us-central1 \
  --network-attachment projects/example-project/regions/us-central1/networkAttachments/example-network-attachment

API

  1. Créez une requête API environments.patch.

  2. Dans cette requête :

    • Pour créer un rattachement de réseau :

      1. Dans le paramètre updateMask, spécifiez le masque config.node_config.network,config.node_config.subnetwork.

      2. Dans le corps de la requête, spécifiez les ID de votre réseau et de votre sous-réseau VPC dans les champs network et subnetwork.

    • Pour utiliser un rattachement réseau existant :

      1. Dans le paramètre updateMask, spécifiez le masque config.node_config.composer_network_attachment.

      2. Dans le corps de la requête, indiquez une valeur pour l'association de réseau existante au format projects/{project}/regions/{region}/networkAttachments/{networkAttachment}.

Exemple (nouveau rattachement de réseau) :

// PATCH https://composer.googleapis.com/v1beta1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.node_config.network,config.node_config.subnetwork

"config": {
  "nodeConfig": {
    "network": "projects/example-project/global/networks/example-network",
    "subnetwork": "projects/example-project/regions/us-central1/subnetworks/example-subnetwork"
  }
}

Exemple (association d'un réseau existant) :

// PATCH https://composer.googleapis.com/v1beta1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.node_config.composer_network_attachment

"config": {
  "nodeConfig": {
    "composerNetworkAttachment": "projects/example-project/regions/us-central1/networkAttachments/example-network-attachment"
  }
}

Terraform

Les champs suivants du bloc node_config spécifient les paramètres de connexion au réseau VPC :

  • network : ID du réseau VPC.
  • subnetwork : ID du sous-réseau VPC.
  • composer_network_attachment : utilisez plutôt un rattachement de réseau existant.

Nouveau rattachement de réseau

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {

    node_config {
      network = NETWORK_ID
      subnetwork = SUBNETWORK_ID
    }

  }
}

Remplacez les éléments suivants :

  • ENVIRONMENT_NAME : nom de votre environnement
  • LOCATION : région où se trouve l'environnement.
  • NETWORK_ID : ID du réseau VPC
  • SUBNETWORK_ID : ID du sous-réseau VPC

Exemple (nouveau rattachement de réseau) :

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

  config {

    node_config {
      network = "projects/example-project/global/networks/example-network"
      subnetwork = "projects/example-project/regions/us-central1/subnetworks/example-subnetwork"
    }

    ... other configuration parameters
  }
}

Rattachement de réseau existant

Par conséquent, l'environnement n'utilisera plus le rattachement. Pour résoudre ce problème, assurez-vous que Terraform ignore les modifications apportées au paramètre producer_accept_lists du rattachement, comme suit :

resource "google_compute_network_attachment" "NETWORK_ATTACHMENT_ID" {
  lifecycle {
    ignore_changes = [producer_accept_lists]
  }
  # ... other configuration parameters
}

Spécifiez ensuite cette pièce jointe pour un environnement. Vous pouvez également spécifier une pièce jointe qui n'est pas gérée dans Terraform. Pour en savoir plus, consultez l'exemple.

resource "google_composer_environment" "example" {
  name = "example-environment"
  region = "us-central1"
  config {
    node_config {
      composer_network_attachment = google_compute_network_attachment.NETWORK_ATTACHMENT_ID.id
    }
    # ... other configuration parameters
  }
}

Remplacez les éléments suivants :

  • ENVIRONMENT_NAME : nom de votre environnement
  • LOCATION : région où se trouve l'environnement.
  • NETWORK_ATTACHMENT_ID : ID du rattachement de réseau.

Exemple (association d'un réseau existant) :

resource "google_compute_network_attachment" "example" {
  lifecycle {
    ignore_changes = [producer_accept_lists]
  }
  # ... other configuration parameters
}

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

  config {

    node_config {
      # Attachment is managed in Terraform:

      composer_network_attachment = google_compute_network_attachment.NETWORK_ATTACHMENT_ID.id

      # Attachment is not managed in Terraform:

      # composer_network_attachment = projects/example-project/regions/us-central1/networkAttachments/example-network-attachment
    }
    # ... other configuration parameters
  }
}

Désactiver la connexion à un réseau VPC

Console

  1. Dans la console Google Cloud , accédez à la page Environnements.

    Accéder à la page Environnements

  2. Dans la liste des environnements, cliquez sur le nom de votre environnement. La page Détails de l'environnement s'ouvre.

  3. Accédez à l'onglet Configuration de l'environnement.

  4. Dans la section Configuration réseau, recherchez l'élément Rattachement réseau et cliquez sur Modifier.

  5. Dans la boîte de dialogue Rattachement de réseau, sélectionnez Aucun, puis cliquez sur Enregistrer.

gcloud

L'argument --disable-vpc-connectivity désactive la connexion au réseau VPC de votre environnement :

gcloud beta composer environments update ENVIRONMENT_NAME \
  --location LOCATION \
  --disable-vpc-connectivity

Remplacez les éléments suivants :

  • ENVIRONMENT_NAME : nom de l'environnement
  • LOCATION : région où se trouve l'environnement

Exemple :

gcloud beta composer environments update example-environment \
  --location us-central1 \
  --disable-vpc-connectivity

API

  1. Créez une requête API environments.patch.

  2. Dans cette requête :

    1. Dans le paramètre updateMask, spécifiez le masque config.node_config.network,config.node_config.subnetwork.

    2. Dans le corps de la requête, spécifiez des valeurs vides dans les champs network et subnetwork.

Exemple :

// PATCH https://composer.googleapis.com/v1beta1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.node_config.network,config.node_config.subnetwork

"config": {
  "nodeConfig": {
    "network": "",
    "subnetwork": ""
  }
}

Terraform

Il n'est pas possible de dissocier un réseau VPC à l'aide de Terraform. Vous pouvez toutefois associer un autre réseau VPC à la place ou dissocier le réseau à l'aide d'autres outils tels que la Google Cloud CLI.

Acheminer le trafic Cloud Run via l'association de réseau

Si vous restreignez l'entrée aux points de terminaison internes pour votre service Cloud Run, vous ne pouvez pas accéder à ce point de terminaison depuis un environnement Managed Airflow. L'accès est limité, car les nœuds de calcul Airflow du projet locataire de l'environnement n'appartiennent pas au même réseau VPC que l'environnement.

Vous pouvez également acheminer le trafic vers le point de terminaison de la fonction via le rattachement réseau au lieu de l'itinéraire par défaut vers les API Google, ce qui permet d'y accéder.

Après le changement, le trafic vers les deux domaines suivants est acheminé via l'association réseau de votre environnement :

  • .run.app
  • .cloudfunctions.net

Si votre application utilise des domaines personnalisés et que vous utilisez un environnement d'adresse IP privée avec un réseau VPC connecté, le trafic vers des adresses non Google transite déjà par défaut par l'association réseau de l'environnement.

Les restrictions suivantes s'appliquent à un environnement où la connectivité est configurée de cette manière :

Pour configurer le routage du trafic vers Cloud Run :

gcloud

Utilisez l'argument --cloud-run-functions-routing lorsque vous créez ou mettez à jour l'environnement :

  • (Par défaut) direct : routez le trafic vers Cloud Run de la même manière que vers les autres API et services Google.
  • via-network-attachment : routez le trafic vers Cloud Run via le rattachement réseau de l'environnement.

Vous pouvez utiliser cet argument dans la même opération que la connexion du réseau VPC.

Pour activer le routage via le réseau de l'environnement, exécutez la commande suivante dans gcloud CLI :

gcloud beta composer environments update ENVIRONMENT_NAME \
  --location LOCATION \
  --cloud-run-functions-routing via-network-attachment

Remplacez les éléments suivants :

  • ENVIRONMENT_NAME : nom de l'environnement
  • LOCATION : région où se trouve l'environnement

Exemple :

gcloud beta composer environments update example-environment \
  --location us-central1 \
  --cloud-run-functions-routing via-network-attachment

API

  1. Créez une requête API environments.patch.

  2. Dans cette requête :

    1. Dans le paramètre updateMask, spécifiez le masque node_config.TrafficRoutingConfig.

    2. Dans le corps de la requête, dans le champ cloud_run_functions_routing, spécifiez comment le trafic vers Cloud Run doit être acheminé.

      • (Par défaut) DIRECT : route le trafic vers Cloud Run de la même manière que vers les autres API et services Google.
      • VIA_NETWORK_ATTACHMENT : routez le trafic vers Cloud Run via l'association réseau de l'environnement.

Vous pouvez utiliser cet argument dans la même opération que la connexion du réseau VPC.

Exemple :

// PATCH https://composer.googleapis.com/v1beta1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.node_config.TrafficRoutingConfig

{
  "config": {
    "nodeConfig": {
      "trafficRoutingConfig": {
        "cloudRunFunctionsRouting": "VIA_NETWORK_ATTACHMENT"
      }
    }
  }
}

Étapes suivantes