Managed Airflow (Gen 3) | Managed Airflow (Gen 2) | Managed Airflow (Legacy Gen 1)
En esta página, se explica cómo tu entorno puede acceder a una red de VPC en Managed Airflow (Gen 3), se proporcionan instrucciones para conectar un entorno a una red de VPC y se describe cómo inhabilitar una conexión configurada anteriormente.
Si deseas habilitar o inhabilitar el acceso a Internet para los componentes de Airflow de tu entorno, consulta Cómo cambiar el tipo de red del entorno (IP privada o pública).
Si deseas inhabilitar o habilitar el acceso a Internet solo cuando instales paquetes de PyPI, consulta Configura el acceso a Internet cuando instales paquetes de PyPI.
Si deseas configurar redes de VPC compartida, consulta Configura la VPC compartida para obtener información sobre cómo configurar proyectos y permisos.
Acerca del acceso a la red de VPC
En Managed Airflow (Gen 3), puedes habilitar el acceso a una red de VPC para un entorno.
Si habilitas el acceso a una red de VPC para un entorno, sucederá lo siguiente:
Los componentes de Airflow de tu entorno pueden acceder a los extremos de red privada en tu red de VPC. Por ejemplo, el código de tu DAG puede acceder a los recursos ubicados en tu red de VPC a través de una conexión de Airflow configurada.
Si tu entorno usa redes de IP privadas, todo el tráfico se enruta a tu red de VPC, excepto el tráfico a las APIs, los servicios y los dominios de Google que están disponibles para los entornos de IP privadas a través del Acceso privado a Google. Este método también permite que tus componentes de Airflow se conecten a las IP públicas de uso privado (PUPI) configuradas en GKE, ya que el tráfico se enrutará a través de la red de VPC en lugar de enviarse a Internet pública.
Según cómo configures tu red de VPC, un entorno de IP privada puede obtener acceso a Internet a través de tu red de VPC.
Las zonas de DNS privadas definidas en tu red de VPC están disponibles automáticamente para los componentes de Airflow de tu entorno.
El entorno reserva dos direcciones IP en tu subred de VPC y usa dos direcciones IP adicionales durante el mantenimiento y las actualizaciones. Asegúrate de que haya cuatro direcciones IP por entorno disponibles en tu subred de VPC.
Managed Airflow usa un adjunto de red para conectar tu entorno a una red de VPC:
Si especificas una red de VPC y una subred, Managed Airflow creará un nuevo adjunto de red en tu proyecto. Este adjunto se borra después de que borras un entorno, inhabilitas la conexión a una red de VPC o sobrescribes los parámetros de conexión de VPC.
Si especificas un adjunto de red existente, este debe estar ubicado en el mismo proyecto que el entorno. Este adjunto no se borra después de que borras un entorno, inhabilitas la conexión o sobrescribes los parámetros de conexión de la VPC.
En las redes de VPC compartida, sucede lo siguiente:
Asegúrate de haber configurado las redes de VPC compartida para Managed Airflow. Consulta Configura la VPC compartida para obtener información sobre cómo configurar proyectos y permisos para Managed Airflow.
Después de configurar las redes de VPC compartida, puedes conectar tu entorno a una red de VPC desde el proyecto host. Si usas un adjunto de red existente, este debe crearse en el proyecto de servicio (en el que se encuentra el entorno) y adjuntarse a una red de VPC compartida.
Limitaciones del intercambio de tráfico de DNS transitivo en Managed Airflow (3ª gen.)
Las limitaciones para el peering de DNS transitivo se aplican a un entorno de Managed Airflow (3ª gen.) de la siguiente manera:
- Cloud DNS tiene una limitación de un salto transitivo, lo que significa que solo se admiten dos saltos en total.
- En Managed Airflow (Gen 3), los componentes de tu entorno se ejecutan en el proyecto del usuario y se comunican con el proyecto en el que se encuentra el entorno a través de una interconexión de DNS. El salto transitivo lo usa el intercambio de tráfico de DNS del proyecto de usuario, por lo que es posible usar solo un salto en total.
Acerca del rango de IP internas del entorno
Los entornos de Managed Airflow (Gen 3) requieren varias direcciones IP para sus componentes que se ejecutan en el proyecto de usuario, como el clúster de tu entorno y el proxy de Cloud SQL. Estas direcciones IP se toman del rango de IP interno del entorno.
El rango de IP interna predeterminado es
100.64.128.0/20.Puedes especificar un rango de IP interna diferente cuando creas un entorno. Este rango debe usar una máscara
/20.No puedes cambiar el rango de IP interna de un entorno existente.
El rango de IP interna interactúa con tu red de VPC de las siguientes maneras:
El rango de IP interna no debe entrar en conflicto con la subred de VPC a la que se conecta el entorno de Managed Airflow. No es posible habilitar una conexión con una subred de VPC que se superponga con el rango de IP interna.
Si el rango de IP interna de un entorno se superpone con los rangos de tu red de VPC, no se podrá acceder desde el entorno a los extremos de tu red de VPC que tengan direcciones IP superpuestas.
Por ejemplo, si el rango interno es
100.64.128.0/20, fallará cualquier solicitud al extremo100.64.128.1en tu red de VPC porque la solicitud no sale del proyecto del arrendatario.El rango de IP interna no está reservado. Puedes usar el mismo rango de IP interna para varios entornos sin ninguna configuración adicional, ya que las redes de VPC internas que usan los diferentes entornos están separadas.
Puedes usar las direcciones IP del rango interno para otros fines, siempre y cuando los DAGs y las tareas de tu entorno no les envíen solicitudes.
Conexión con una red de VPC
Console
En la consola de Google Cloud , ve a la página Entornos.
En la lista de entornos, haz clic en el nombre de tu entorno. Se abrirá la página Detalles del entorno.
Ve a la pestaña Configuración del entorno.
En la sección Configuración de red, busca el elemento Adjunto de red y haz clic en Editar.
En el cuadro de diálogo Adjunto de red, haz lo siguiente:
Para crear un nuevo adjunto de red, en la lista Adjunto de red, selecciona Crear un nuevo adjunto de red. En las listas Red y Subred, selecciona una red de VPC y una subred.
Para usar un adjunto de red existente, en la lista Adjunto de red, selecciona un adjunto.
Haz clic en Guardar.
gcloud
Los siguientes argumentos de Google Cloud CLI especifican parámetros de conexión de la red de VPC:
--network: Es el ID de la red de VPC.--subnetwork: ID de la subred de VPC.--network-attachment: En su lugar, usa un adjunto de red existente.
Nuevo adjunto de red
Para conectar tu entorno a una red de VPC a través de una nueva conexión de red, ejecuta el siguiente comando de Google Cloud CLI:
gcloud beta composer environments update ENVIRONMENT_NAME \
--location LOCATION \
--network NETWORK_ID \
--subnetwork SUBNETWORK_ID
Reemplaza lo siguiente:
ENVIRONMENT_NAME: Es el nombre del entorno.LOCATION: Es la región en la que se encuentra el entorno.NETWORK_ID: ID de la red de VPCSUBNETWORK_ID: ID de subred de VPC
Ejemplo:
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
Adjunto de red existente
Para conectar tu entorno a una red de VPC a través de una nueva conexión de red, ejecuta el siguiente comando de Google Cloud CLI:
gcloud beta composer environments update ENVIRONMENT_NAME \
--location LOCATION \
--network-attachment NETWORK_ATTACHMENT_ID
Reemplaza lo siguiente:
ENVIRONMENT_NAME: Es el nombre del entorno.LOCATION: Es la región en la que se encuentra el entorno.NETWORK_ATTACHMENT_ID: Es el adjunto de red en formatoprojects/{project}/regions/{region}/networkAttachments/{networkAttachment}.
Ejemplo:
gcloud beta composer environments update example-environment \
--location us-central1 \
--network-attachment projects/example-project/regions/us-central1/networkAttachments/example-network-attachment
API
Crea una solicitud a la API de
environments.patch.En esta solicitud, realiza lo siguiente:
Para crear un adjunto de red nuevo, sigue estos pasos:
En el parámetro
updateMask, especifica la máscaraconfig.node_config.network,config.node_config.subnetwork.En el cuerpo de la solicitud, en los campos
networkysubnetwork, especifica los IDs de tu red de VPC y tu subred.
Para usar un adjunto de red existente, haz lo siguiente:
En el parámetro
updateMask, especifica la máscaraconfig.node_config.composer_network_attachment.En el cuerpo de la solicitud, proporciona un valor para la vinculación de red existente en el formato
projects/{project}/regions/{region}/networkAttachments/{networkAttachment}.
Ejemplo (adjunto de red nuevo):
// 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"
}
}
Ejemplo (adjunto de red existente):
// 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
Los siguientes campos del bloque node_config especifican los parámetros de conexión de la red de VPC:
network: Es el ID de la red de VPC.subnetwork: ID de la subred de VPC.composer_network_attachment: En su lugar, usa un adjunto de red existente.
Nuevo adjunto de red
resource "google_composer_environment" "example" {
provider = google-beta
name = "ENVIRONMENT_NAME"
region = "LOCATION"
config {
node_config {
network = NETWORK_ID
subnetwork = SUBNETWORK_ID
}
}
}
Reemplaza lo siguiente:
ENVIRONMENT_NAME: Es el nombre de tu entorno.LOCATION: Es la región en la que se encuentra el entorno.NETWORK_ID: ID de la red de VPCSUBNETWORK_ID: ID de subred de VPC
Ejemplo (adjunto de red nuevo):
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
}
}
Adjunto de red existente
Como resultado, el entorno ya no usará la conexión. Para solucionar este problema, asegúrate de que Terraform ignore los cambios en el parámetro producer_accept_lists de la conexión, de la siguiente manera:
resource "google_compute_network_attachment" "NETWORK_ATTACHMENT_ID" {
lifecycle {
ignore_changes = [producer_accept_lists]
}
# ... other configuration parameters
}
Luego, especifica este adjunto para un entorno. También puedes especificar un adjunto que no se administre en Terraform. Consulta el ejemplo.
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
}
}
Reemplaza lo siguiente:
ENVIRONMENT_NAME: Es el nombre de tu entorno.LOCATION: Es la región en la que se encuentra el entorno.NETWORK_ATTACHMENT_ID: Es el ID del adjunto de red.
Ejemplo (adjunto de red existente):
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
}
}
Inhabilita la conexión a una red de VPC
Console
En la consola de Google Cloud , ve a la página Entornos.
En la lista de entornos, haz clic en el nombre de tu entorno. Se abrirá la página Detalles del entorno.
Ve a la pestaña Configuración del entorno.
En la sección Configuración de red, busca el elemento Adjunto de red y haz clic en Editar.
En el diálogo Adjunto de red, selecciona Ninguno y haz clic en Guardar.
gcloud
El argumento --disable-vpc-connectivity inhabilita la conexión de red de VPC de tu entorno:
gcloud beta composer environments update ENVIRONMENT_NAME \
--location LOCATION \
--disable-vpc-connectivity
Reemplaza lo siguiente:
ENVIRONMENT_NAME: Es el nombre del entorno.LOCATION: Es la región en la que se encuentra el entorno.
Ejemplo:
gcloud beta composer environments update example-environment \
--location us-central1 \
--disable-vpc-connectivity
API
Crea una solicitud a la API de
environments.patch.En esta solicitud, realiza lo siguiente:
En el parámetro
updateMask, especifica la máscaraconfig.node_config.network,config.node_config.subnetwork.En el cuerpo de la solicitud, en los campos
networkysubnetwork, especifica valores vacíos.
Ejemplo:
// 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
No es posible desconectar una red de VPC con Terraform. En su lugar, puedes conectar otra red de VPC o desconectar la red con otras herramientas, como Google Cloud CLI.
Enruta el tráfico de Cloud Run a través de la conexión de red
Si restringes la entrada a extremos internos para tu servicio de Cloud Run, no podrás acceder a este extremo desde un entorno de Managed Airflow. El acceso está restringido porque los trabajadores de Airflow en el proyecto de usuario del entorno no pertenecen a la misma red de VPC que el entorno.
Como opción, puedes enrutar el tráfico al extremo de la función a través de la conexión de red en lugar de la ruta predeterminada a las APIs de Google, lo que permite el acceso.
Después del cambio, el tráfico a los siguientes dos dominios se enruta a través de la conexión de red de tu entorno:
.run.app.cloudfunctions.net
Si tu app usa dominios personalizados y un entorno de IP privada con una red de VPC conectada, el tráfico a direcciones que no son de Google ya pasa por la conexión de red del entorno de forma predeterminada.
Se aplican las siguientes restricciones a un entorno en el que la conectividad se configura de esta manera:
- El entorno debe usar redes de IP privadas. Si tu entorno usa una IP pública, puedes cambiar su tipo de red.
- No es posible desconectar un entorno de una red de VPC. Para desconectarlo, primero debes revertir el enrutamiento de tráfico predeterminado.
Para configurar el enrutamiento del tráfico a Cloud Run, haz lo siguiente:
gcloud
Usa el argumento --cloud-run-functions-routing cuando crees o actualices el entorno:
- (Predeterminado)
direct: Enruta el tráfico a Cloud Run de la misma manera que a otras APIs y servicios de Google. via-network-attachment: Enruta el tráfico a Cloud Run a través de la conexión de red del entorno.
Puedes usar este argumento en la misma operación para conectar la red de VPC.
Para habilitar el enrutamiento a través de la conexión de red del entorno, ejecuta el siguiente comando en la gcloud CLI:
gcloud beta composer environments update ENVIRONMENT_NAME \
--location LOCATION \
--cloud-run-functions-routing via-network-attachment
Reemplaza lo siguiente:
ENVIRONMENT_NAME: Es el nombre del entorno.LOCATION: Es la región en la que se encuentra el entorno.
Ejemplo:
gcloud beta composer environments update example-environment \
--location us-central1 \
--cloud-run-functions-routing via-network-attachment
API
Crea una solicitud a la API de
environments.patch.En esta solicitud, realiza lo siguiente:
En el parámetro
updateMask, especifica la máscaranode_config.TrafficRoutingConfig.En el cuerpo de la solicitud, en el campo
cloud_run_functions_routing, especifica cómo se debe enrutar el tráfico a Cloud Run.- (Predeterminado)
DIRECT: Enruta el tráfico a Cloud Run de la misma manera que a otras APIs y servicios de Google. VIA_NETWORK_ATTACHMENT: Enruta el tráfico a Cloud Run a través de la vinculación de red del entorno.
- (Predeterminado)
Puedes usar este argumento en la misma operación para conectar la red de VPC.
Ejemplo:
// 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"
}
}
}
}
¿Qué sigue?
- Cambia el tipo de red del entorno (IP privada o pública)
- Configura el acceso a Internet cuando instales paquetes de PyPI