Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
En esta página se explica cómo puede acceder tu entorno a una red de VPC en Cloud Composer 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 quieres habilitar o inhabilitar el acceso a Internet de los componentes de Airflow de tu entorno, consulta Cambiar el tipo de red del entorno (IP privada o pública).
Si quieres inhabilitar o habilitar el acceso a Internet solo al instalar paquetes de PyPI, consulta Configurar el acceso a Internet al instalar paquetes de PyPI.
Si quieres configurar redes de VPC compartidas, consulta Configurar una VPC compartida para obtener información sobre cómo configurar proyectos y permisos.
Información sobre el acceso a la red de VPC
En Cloud Composer 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, ocurrirá lo siguiente:
Los componentes de Airflow de tu entorno pueden acceder a los endpoints de la red privada de 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 interno se dirige 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 privada a través del acceso privado de Google.
En función de 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.
Cloud Composer usa un adjunto de red para conectar tu entorno a una red de VPC:
Si especificas una red de VPC y una subred, Cloud Composer crea un nuevo adjunto de red en tu proyecto. Este archivo adjunto se elimina después de eliminar un entorno, inhabilitar la conexión a una red de VPC o sobrescribir los parámetros de conexión de la VPC.
Si especifica un elemento NetworkAttachment, debe estar ubicado en el mismo proyecto que el entorno. Esta vinculación no se elimina cuando eliminas un entorno, inhabilitas la conexión o sobrescribes los parámetros de conexión de la VPC.
En las redes de VPC compartidas:
Asegúrate de haber configurado la red de VPC compartida para Cloud Composer. Consulta Configurar una VPC compartida para obtener información sobre cómo configurar proyectos y permisos para Cloud Composer.
Una vez que hayas configurado la red de VPC compartida, podrás conectar tu entorno a una red de VPC del proyecto host. Si utilizas un adjunto de red, debe crearse en el proyecto de servicio (donde se encuentra el entorno) y adjuntarse a una red de VPC compartida.
Limitaciones del peering de DNS transitivo en Cloud Composer 3
Las limitaciones del peering de DNS transitivo se aplican a un entorno de Cloud Composer 3 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 Cloud Composer 3, los componentes de tu entorno se ejecutan en el proyecto de arrendatario y se comunican con el proyecto en el que se encuentra el entorno mediante un emparejamiento de VPC. El salto transitivo lo usa el emparejamiento de VPC del proyecto de inquilino, por lo que es posible usar solo un salto en total.
Acerca del intervalo de IP internas del entorno
Los entornos de Cloud Composer 3 requieren varias direcciones IP para sus componentes, que se ejecutan en el proyecto de inquilino, como el clúster de tu entorno y el proxy de Cloud SQL. Estas direcciones IP se toman del intervalo de IP internas del entorno.
El intervalo de IPs internas predeterminado es
100.64.128.0/20
.Puedes especificar un intervalo de IPs internas diferente al crear un entorno. Este intervalo debe usar una máscara
/20
.No puedes cambiar el intervalo de IPs internas de un entorno que ya tengas.
El intervalo de IP internas interactúa con tu red de VPC de las siguientes formas:
El intervalo de IPs internas no debe entrar en conflicto con la subred de VPC a la que está conectado el entorno de Cloud Composer. No es posible habilitar una conexión con una subred de VPC que se solape con el intervalo de IPs internas.
Si el intervalo de IPs internas de un entorno se solapa con los intervalos de tu red de VPC, no se podrá acceder al entorno desde los endpoints de tu red de VPC que tengan IPs solapadas.
Por ejemplo, si el intervalo interno es
100.64.128.0/20
, cualquier solicitud al endpoint100.64.128.1
de tu red de VPC fallará porque la solicitud no sale del proyecto de inquilino.El intervalo de IP internas no está reservado. Puede usar el mismo intervalo de IPs internas en varios entornos sin necesidad de realizar ninguna configuración adicional, ya que las redes VPC internas que usan los diferentes entornos están separadas.
Puedes usar las direcciones IP del intervalo interno para otros fines, siempre que los DAGs y las tareas de tu entorno no les envíen solicitudes.
Conectarse a una red de VPC
Consola
En la Google Cloud consola, ve a la página Entornos.
En la lista de entornos, haz clic en el nombre del 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:
Para crear un nuevo archivo adjunto de red, en la lista Archivo adjunto de red, selecciona Crear un nuevo archivo adjunto de red. En las listas Red y Subred, selecciona una red VPC y una subred.
Para usar un archivo adjunto de red que ya tengas, selecciona uno en la lista Archivo adjunto de red.
Haz clic en Guardar.
gcloud
Los siguientes argumentos de la CLI de Google Cloud especifican los parámetros de conexión de la red de VPC:
--network
: ID de la red de VPC.--subnetwork
: ID de subred de VPC.--network-attachment
: usa un archivo adjunto de red que ya tengas.
Nuevo archivo adjunto de red
Para conectar tu entorno a una red de VPC a través de un nuevo adjunto de red, ejecuta el siguiente comando de la CLI de Google Cloud:
gcloud beta composer environments update ENVIRONMENT_NAME \
--location LOCATION \
--network NETWORK_ID \
--subnetwork SUBNETWORK_ID
Haz los cambios siguientes:
ENVIRONMENT_NAME
: el nombre del entornoLOCATION
: la región en la que se encuentra el entornoNETWORK_ID
: ID de la red de VPC.SUBNETWORK_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 un nuevo adjunto de red, ejecuta el siguiente comando de la CLI de Google Cloud:
gcloud beta composer environments update ENVIRONMENT_NAME \
--location LOCATION \
--network-attachment NETWORK_ATTACHMENT_ID
Haz los cambios siguientes:
ENVIRONMENT_NAME
: el nombre del entornoLOCATION
: la región en la que se encuentra el entornoNETWORK_ATTACHMENT_ID
: el archivo 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 de la API
environments.patch
.En esta solicitud:
Para crear un archivo adjunto de red:
En el parámetro
updateMask
, especifique laconfig.node_config.network,config.node_config.subnetwork
máscara.En el cuerpo de la solicitud, en los campos
network
ysubnetwork
, especifica los IDs de tu red de VPC y de tu subred.
Para usar un adjunto de red ya creado, sigue estos pasos:
En el parámetro
updateMask
, especifique laconfig.node_config.composer_network_attachment
máscara.En el cuerpo de la solicitud, proporciona un valor para el archivo de red en el formato
projects/{project}/regions/{region}/networkAttachments/{networkAttachment}
.
Ejemplo (nuevo archivo adjunto de red):
// 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):
// 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
: ID de la red de VPC.subnetwork
: ID de subred de VPC.composer_network_attachment
: usa un archivo adjunto de red que ya tengas.
Nuevo archivo 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
}
}
}
Haz los cambios siguientes:
ENVIRONMENT_NAME
: el nombre de tu entorno.LOCATION
: la región en la que se encuentra el entorno.NETWORK_ID
: ID de la red de VPC.SUBNETWORK_ID
: ID de subred de VPC
Ejemplo (nuevo archivo adjunto de red):
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
Por lo tanto, el entorno dejará de usar el archivo adjunto. Para solucionar este problema, asegúrate de que Terraform ignore los cambios en el parámetro producer_accept_lists
del archivo adjunto, tal como se indica a continuación:
resource "google_compute_network_attachment" "NETWORK_ATTACHMENT_ID" {
lifecycle {
ignore_changes = [producer_accept_lists]
}
# ... other configuration parameters
}
Después, especifica este archivo adjunto para un entorno. También puedes especificar un archivo adjunto que no se gestione 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
}
}
Haz los cambios siguientes:
ENVIRONMENT_NAME
: el nombre de tu entorno.LOCATION
: la región en la que se encuentra el entorno.NETWORK_ATTACHMENT_ID
: el ID del archivo adjunto de red.
Ejemplo (adjunto de red):
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
}
}
Inhabilitar la conexión a una red de VPC
Consola
En la Google Cloud consola, ve a la página Entornos.
En la lista de entornos, haz clic en el nombre del 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, 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
Haz los cambios siguientes:
ENVIRONMENT_NAME
: el nombre del entornoLOCATION
: 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 de la API
environments.patch
.En esta solicitud:
En el parámetro
updateMask
, especifique laconfig.node_config.network,config.node_config.subnetwork
máscara.En el cuerpo de la solicitud, en los campos
network
ysubnetwork
, 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 se puede separar una red de VPC con Terraform. En su lugar, puedes asociar otra red de VPC o disociar la red con otras herramientas, como la CLI de Google Cloud.
Siguientes pasos
- Cambiar el tipo de red del entorno (IP privada o pública)
- Configurar el acceso a Internet al instalar paquetes de PyPI