Connettere un ambiente a una rete VPC

Airflow gestito (terza generazione) | Airflow gestito (seconda generazione) | Airflow gestito (prima generazione legacy)

Questa pagina spiega come l'ambiente può accedere a una rete VPC in Airflow gestito (terza generazione), fornisce istruzioni per connettere un ambiente a una rete VPC e descrive come disabilitare una connessione configurata in precedenza.

Informazioni sull'accesso alla rete VPC

In Managed Airflow (terza generazione), puoi attivare l'accesso a una rete VPC per un ambiente.

Se attivi l'accesso a una rete VPC per un ambiente:

  • I componenti Airflow del tuo ambiente possono accedere agli endpoint di rete privata nella rete VPC. Ad esempio, il codice DAG può accedere alle risorse che si trovano nella rete VPC tramite una connessione Airflow configurata.

  • Se il tuo ambiente utilizza la rete IP privata, tutto il traffico viene instradato alla rete VPC, ad eccezione del traffico verso le API di Google, i servizi e i domini che sono disponibili per gli ambienti IP privati tramite l'accesso privato Google. Questo metodo consente inoltre ai componenti Airflow di connettersi agli IP pubblici utilizzati privatamente (PUPI) configurati in GKE, poiché il traffico verrà instradato attraverso la rete VPC anziché essere inviato a internet pubblico.

  • A seconda di come configuri la rete VPC, un ambiente IP privato può accedere a internet tramite la rete VPC.

  • Le zone DNS private definite nella rete VPC sono disponibili automaticamente per i componenti Airflow dell'ambiente.

  • L'ambiente riserva due indirizzi IP nella subnet VPC e utilizza due indirizzi IP aggiuntivi durante la manutenzione e gli upgrade. Assicurati che nella subnet VPC siano disponibili quattro indirizzi IP per ambiente.

Airflow gestito utilizza un collegamento di rete per connettere l'ambiente a una rete VPC:

  • Se specifichi una rete VPC e una subnet, Managed Airflow crea un nuovo collegamento di rete nel tuo progetto. Questo collegamento viene eliminato dopo l'eliminazione di un ambiente, la disattivazione della connessione a una rete VPC o la sovrascrittura dei parametri di connessione VPC.

  • Se specifichi un collegamento di rete esistente, questo deve trovarsi nello stesso progetto dell'ambiente. Questo collegamento non viene eliminato dopo l'eliminazione di un ambiente, la disattivazione della connessione o la sovrascrittura dei parametri di connessione VPC.

  • Nella rete VPC condivisa:

    • Assicurati di aver configurato la rete VPC condiviso per Managed Airflow. Consulta Configurare il VPC condiviso per informazioni sulla configurazione di progetti e autorizzazioni per Managed Airflow.

    • Dopo aver configurato la rete VPC condivisa, puoi connettere l'ambiente a una rete VPC dal progetto host. Se utilizzi un collegamento di rete esistente, questo deve essere creato nel progetto di servizio (dove si trova l'ambiente) e collegato a una rete VPC condiviso.

Limitazioni per il peering DNS transitivo in Managed Airflow (terza generazione)

Le limitazioni per il peering DNS transitivo si applicano a un ambiente Airflow gestito (terza generazione) nel seguente modo:

  • Cloud DNS ha una limitazione di un hop transitivo, il che significa che sono supportati solo due hop in totale.
  • In Airflow gestito (terza generazione), i componenti dell'ambiente vengono eseguiti nel progetto tenant e comunicano con il progetto in cui si trova l' ambiente tramite un peering DNS. L'hop transitivo viene utilizzato dal peering DNS del progetto tenant, quindi è possibile utilizzare un solo hop in totale.

Informazioni sull'intervallo IP interno dell'ambiente

Gli ambienti Managed Airflow (terza generazione) richiedono diversi indirizzi IP per i suoi componenti in esecuzione nel progetto tenant, come il cluster dell'ambiente e il proxy Cloud SQL. Questi indirizzi IP vengono presi dall'intervallo IP interno dell'ambiente.

  • L'intervallo IP interno predefinito è 100.64.128.0/20.

  • Puoi specificare un intervallo IP interno diverso quando crei un ambiente. Questo intervallo deve utilizzare una maschera /20.

  • Non puoi modificare l'intervallo IP interno di un ambiente esistente.

L'intervallo IP interno interagisce con la rete VPC nei seguenti modi:

  • L'intervallo IP interno non deve essere in conflitto con la subnet VPC a cui è connesso l'ambiente Airflow gestito. Non è possibile attivare una connessione con una subnet VPC che si sovrappone all'intervallo IP interno.

  • Se l'intervallo IP interno di un ambiente si sovrappone agli intervalli della rete VPC, gli endpoint della rete VPC con indirizzi IP sovrapposti non sono accessibili dall'ambiente.

    Ad esempio, se l'intervallo interno è 100.64.128.0/20, qualsiasi richiesta all'endpoint 100.64.128.1 nella rete VPC non riesce perché la richiesta non lascia il progetto tenant.

  • L'intervallo IP interno non è riservato. Puoi utilizzare lo stesso intervallo IP interno per più ambienti senza alcuna configurazione aggiuntiva perché le reti VPC interne utilizzate da ambienti diversi sono separate.

  • Puoi utilizzare gli indirizzi IP dell'intervallo interno per altri scopi, a condizione che i DAG e le attività nel tuo ambiente non effettuino richieste a questi indirizzi.

Connettersi a una rete VPC

Console

  1. Nella Google Cloud console, vai alla pagina Ambienti.

    Vai ad Ambienti

  2. Nell'elenco degli ambienti, fai clic sul nome dell'ambiente. Viene visualizzata la pagina Dettagli ambiente.

  3. Vai alla scheda Configurazione ambiente.

  4. Nella sezione Configurazione di rete, individua l'elemento Collegamento di rete e fai clic su Modifica.

  5. Nella finestra di dialogo Collegamento di rete:

    • Per creare un nuovo collegamento di rete, nell'elenco Collegamento di rete, seleziona Crea un nuovo collegamento di rete. Negli elenchi Rete e Subnet, seleziona una rete VPC e una subnet.

    • Per utilizzare un collegamento di rete esistente, seleziona un collegamento nell'elenco Collegamento di rete.

  6. Fai clic su Salva.

gcloud

I seguenti argomenti di Google Cloud CLI specificano i parametri di connessione alla rete VPC:

  • --network: ID rete VPC.
  • --subnetwork: ID subnet VPC.
  • --network-attachment: utilizza invece un collegamento di rete esistente.

Nuovo collegamento di rete

Per connettere l'ambiente a una rete VPC tramite un nuovo collegamento di rete, esegui il seguente comando Google Cloud CLI:

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

Sostituisci quanto segue:

  • ENVIRONMENT_NAME: il nome dell'ambiente
  • LOCATION: la regione in cui si trova l'ambiente
  • NETWORK_ID: ID rete VPC
  • SUBNETWORK_ID: ID subnet VPC

Esempio:

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

Collegamento di rete esistente

Per connettere l'ambiente a una rete VPC tramite un nuovo collegamento di rete, esegui il seguente comando Google Cloud CLI:

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

Sostituisci quanto segue:

  • ENVIRONMENT_NAME: il nome dell'ambiente
  • LOCATION: la regione in cui si trova l'ambiente
  • NETWORK_ATTACHMENT_ID: il collegamento di rete nel formato projects/{project}/regions/{region}/networkAttachments/{networkAttachment}.

Esempio:

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

API

  1. Crea una richiesta API environments.patch.

  2. In questa richiesta:

    • Per creare un nuovo collegamento di rete:

      1. Nel parametro updateMask, specifica la maschera config.node_config.network,config.node_config.subnetwork.

      2. Nel corpo della richiesta, nei network e subnetwork campi, specifica gli ID della rete VPC e della subnet.

    • Per utilizzare un collegamento di rete esistente:

      1. Nel parametro updateMask, specifica la maschera config.node_config.composer_network_attachment.

      2. Nel corpo della richiesta, fornisci un valore per il collegamento di rete esistente nel formato projects/{project}/regions/{region}/networkAttachments/{networkAttachment}.

Esempio (nuovo collegamento di rete):

// 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"
  }
}

Esempio (collegamento di rete esistente):

// 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

I seguenti campi nel blocco node_config specificano i parametri di connessione alla rete VPC:

  • network: ID rete VPC.
  • subnetwork: ID subnet VPC.
  • composer_network_attachment: utilizza invece un collegamento di rete esistente.

Nuovo collegamento di rete

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

  config {

    node_config {
      network = NETWORK_ID
      subnetwork = SUBNETWORK_ID
    }

  }
}

Sostituisci quanto segue:

  • ENVIRONMENT_NAME: il nome dell'ambiente.
  • LOCATION: la regione in cui si trova l'ambiente.
  • NETWORK_ID: ID rete VPC
  • SUBNETWORK_ID: ID subnet VPC

Esempio (nuovo collegamento di rete):

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
  }
}

Collegamento di rete esistente

Di conseguenza, l'ambiente non utilizzerà più il collegamento. Per risolvere il problema, assicurati che Terraform ignori le modifiche al parametro producer_accept_lists del collegamento, come segue:

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

Dopodiché, specifica questo collegamento per un ambiente. Puoi anche specificare un collegamento non gestito in Terraform, consulta l'esempio.

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
  }
}

Sostituisci quanto segue:

  • ENVIRONMENT_NAME: il nome dell'ambiente.
  • LOCATION: la regione in cui si trova l'ambiente.
  • NETWORK_ATTACHMENT_ID: l'ID del collegamento di rete.

Esempio (collegamento di rete esistente):

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
  }
}

Disattivare la connessione a una rete VPC

Console

  1. Nella Google Cloud console, vai alla pagina Ambienti.

    Vai ad Ambienti

  2. Nell'elenco degli ambienti, fai clic sul nome dell'ambiente. Viene visualizzata la pagina Dettagli ambiente.

  3. Vai alla scheda Configurazione ambiente.

  4. Nella sezione Configurazione di rete, individua l'elemento Collegamento di rete e fai clic su Modifica.

  5. Nella finestra di dialogo Collegamento di rete, seleziona Nessuno e fai clic su Salva.

gcloud

L'argomento --disable-vpc-connectivity disattiva la connessione alla rete VPC dell'ambiente:

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

Sostituisci quanto segue:

  • ENVIRONMENT_NAME: il nome dell'ambiente
  • LOCATION: la regione in cui si trova l'ambiente

Esempio:

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

API

  1. Crea una richiesta API environments.patch.

  2. In questa richiesta:

    1. Nel parametro updateMask, specifica la maschera config.node_config.network,config.node_config.subnetwork.

    2. Nel corpo della richiesta, nei campi network e subnetwork, specifica valori vuoti.

Esempio:

// 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

Non è possibile scollegare una rete VPC utilizzando Terraform. Puoi invece collegare un'altra rete VPC al suo posto o scollegare la rete utilizzando altri strumenti come Google Cloud CLI.

Passaggi successivi