Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3
En esta página, se explica cómo usar rangos de IP públicas de uso privado en tu entorno de IP privada. Para obtener información general sobre la creación de entornos de IP privada, consulta Configura un entorno de IP privada.
Información sobre los rangos de IP públicas de uso privado en Cloud Composer
Google Kubernetes Engine requiere muchas direcciones IP para sus recursos: cada nodo, Pod y servicio debe tener una dirección IP única. Esto puede generar una situación en la que los rangos de IP privados existentes no pueden admitir suficientes direcciones IP.
Los entornos de Cloud Composer pueden usar algunos rangos de IP del espacio de direcciones que no es RFC 1918 sin configuración adicional.
Si deseas usar más direcciones IP, tu entorno puede usar de forma privada ciertos rangos de direcciones IP públicas como rangos de direcciones IP de subred internos para Pods y servicios. Estos rangos se denominan rangos de IP públicas de uso privado (PUPI).
Puedes utilizar cualquier dirección IP pública de forma privada, excepto ciertos rangos restringidos.
Antes de comenzar
Solo puedes especificar rangos de IP públicas cuando creas un entorno nuevo. No es posible cambiar los rangos de IP de un entorno existente.
Tu entorno debe ser un entorno de IP privada.
Puedes crear entornos con rangos de PUPI solo mediante
gcloud
, Terraform y la API de REST.Solo los pods y los servicios de GKE pueden usar rangos de IP públicas. Otros componentes del entorno, como Cloud SQL, el servidor web y el plano de control de GKE, no pueden usar rangos de IP públicas en un entorno de IP privadas.
El clúster de GKE se crea con la SNAT predeterminada inhabilitada.
Habilita rangos de PUPI cuando creas un entorno
gcloud
A fin de crear un entorno con rangos de PUPI, usa el argumento --enable-privately-used-public-ips
cuando crees un entorno de IP privada. Luego, especifica los rangos de IP públicas para los pods y los servicios.
Rangos de la subred administrados por GKE
Para crear rangos de la subred administrados por GKE, haz lo siguiente:
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-1.20.12-airflow-1.10.15 \
--enable-ip-alias \
--enable-private-environment \
--enable-privately-used-public-ips \
--cluster-ipv4-cidr POD_IP_RANGE \
--services-ipv4-cidr SERVICES_IP_RANGE
Reemplaza lo siguiente:
ENVIRONMENT_NAME
por el nombre del entorno.LOCATION
por la región en la que se encuentra el entornoPOD_IP_RANGE
por un rango de direcciones IP en la notación CIDR. Este rango se agrega como un rango de direcciones IP secundario a la subred de tu entorno y se usa como el rango de direcciones IP para los pods.SERVICES_IP_RANGE
por un rango de direcciones IP en la notación CIDR. Este rango es el rango de direcciones IP secundario para los servicios en la subred de tu entorno.
Ejemplo:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-1.20.12-airflow-1.10.15 \
--enable-ip-alias \
--enable-private-environment \
--enable-privately-used-public-ips \
--cluster-ipv4-cidr 10.3.192.0/20 \
--services-ipv4-cidr 172.16.194.0/23
Rangos de la subred administrados por el usuario
Para crear rangos administrados por el usuario, haz lo siguiente:
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-1.20.12-airflow-1.10.15 \
--enable-ip-alias \
--enable-private-environment \
--enable-privately-used-public-ips \
--cluster-secondary-range-name POD_IP_RANGE_NAME \
--services-secondary-range-name SERVICES_IP_RANGE_NAME
Reemplaza lo siguiente:
ENVIRONMENT_NAME
por el nombre del entorno.LOCATION
por la región en la que se encuentra el entornoPOD_IP_RANGE_NAME
por el nombre de un rango de direcciones IP secundario existente en la subred especificada. Los pods usan este rango.SERVICES_IP_RANGE_NAME
por el nombre de un rango de direcciones IP secundario existente en la subred especificada. Los servicios usan este rango.
Ejemplo:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-1.20.12-airflow-1.10.15 \
--enable-ip-alias \
--enable-private-environment \
--enable-privately-used-public-ips \
--cluster-secondary-range-name "public-1" \
--services-secondary-range-name "public-2"
API
Realiza una solicitud a la API de environments.create
. En el recurso Entorno, especifica los parámetros de configuración para un entorno con rangos de PUPI.
Rangos de la subred administrados por GKE
Para crear rangos de la subred administrados por GKE, haz lo siguiente:
// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments
{
"name": "ENVIRONMENT_NAME",
"config": {
"nodeConfig": {
"ipAllocationPolicy": {
"useIpAliases": true,
"clusterIpv4CidrBlock":"POD_IP_RANGE",
"servicesIpv4CidrBlock":"SERVICES_IP_RANGE"
}
},
"privateEnvironmentConfig": {
"enablePrivateEnvironment": true,
"enablePrivatelyUsedPublicIps": true
}
}
}
Reemplaza lo siguiente:
ENVIRONMENT_NAME
por el nombre del entorno.POD_IP_RANGE
por un rango de direcciones IP en la notación CIDR. Este rango se agrega como un rango de direcciones IP secundario a la subred de tu entorno y se usa como el rango de direcciones IP para los pods.SERVICES_IP_RANGE
por un rango de direcciones IP en la notación CIDR. Este rango es el rango de direcciones IP secundario para los servicios en la subred de tu entorno.
Ejemplo:
// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments
{
"name": "example-environment",
"config": {
"nodeConfig": {
"ipAllocationPolicy": {
"useIpAliases": true,
"clusterIpv4CidrBlock":"10.3.192.0/20",
"servicesIpv4CidrBlock":"172.16.194.0/23"
}
},
"privateEnvironmentConfig": {
"enablePrivateEnvironment": true,
"enablePrivatelyUsedPublicIps": true
}
}
}
Rangos de la subred administrados por el usuario
Para crear rangos administrados por el usuario, haz lo siguiente:
// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments
{
"name": "ENVIRONMENT_NAME",
"config": {
"nodeConfig": {
"ipAllocationPolicy": {
"useIpAliases": true,
"clusterSecondaryRangeName":"POD_IP_RANGE",
"servicesSecondaryRangeName": "SERVICES_IP_RANGE"
}
},
"privateEnvironmentConfig": {
"enablePrivateEnvironment": true,
"enablePrivatelyUsedPublicIps": true
}
}
}
Reemplaza lo siguiente:
ENVIRONMENT_NAME
por el nombre del entorno.POD_IP_RANGE_NAME
por el nombre de un rango de direcciones IP secundario existente en la subred especificada. Los pods usan este rango.SERVICES_IP_RANGE_NAME
por el nombre de un rango de direcciones IP secundario existente en la subred especificada. Los servicios usan este rango.
Ejemplo:
// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments
{
"name": "example-environment",
"config": {
"nodeConfig": {
"ipAllocationPolicy": {
"useIpAliases": true,
"clusterSecondaryRangeName":"public-1",
"servicesSecondaryRangeName": "public-2"
}
},
"privateEnvironmentConfig": {
"enablePrivateEnvironment": true,
"enablePrivatelyUsedPublicIps": true
}
}
}
Terraform
Cuando creas un entorno, el campo enable_privately_used_public_ips
en el bloque private_environment_config
habilita el uso de rangos de PUPI. También debes especificar rangos de PUPI para pods y servicios.
Rangos de la subred administrados por GKE
Para crear rangos de la subred administrados por GKE, haz lo siguiente:
resource "google_composer_environment" "example_environment" {
provider = google-beta
name = "ENVIRONMENT_NAME"
region = "LOCATION"
config {
node_config {
ip_allocation_policy = [{
use_ip_aliases = true
cluster_ipv4_cidr_block = "POD_IP_RANGE"
services_ipv4_cidr_block = "SERVICES_IP_RANGE"
cluster_secondary_range_name = null
services_secondary_range_name = null
}]
}
private_environment_config {
enable_privately_used_public_ips = true
// Other private ip environment parameters
}
}
}
Reemplaza lo siguiente:
ENVIRONMENT_NAME
por el nombre del entorno.LOCATION
por la región en la que se encuentra el entornoPOD_IP_RANGE
por un rango de direcciones IP en la notación CIDR. Este rango se agrega como un rango de direcciones IP secundario a la subred de tu entorno y se usa como el rango de direcciones IP para los pods.SERVICES_IP_RANGE
por un rango de direcciones IP en la notación CIDR. Este rango es el rango de direcciones IP secundario para los servicios en la subred de tu entorno.
Ejemplo:
resource "google_composer_environment" "example_environment" {
provider = google-beta
name = "example-environment"
region = "us-central1"
config {
node_config {
// Specify your network and subnetwork
network = google_compute_network.example_network.id
subnetwork = google_compute_subnetwork.example_subnet.id
ip_allocation_policy = [{
use_ip_aliases = true
// Specify PUPI addresses
cluster_ipv4_cidr_block = "10.3.192.0/20"
services_ipv4_cidr_block = "172.16.194.0/23"
cluster_secondary_range_name = null
services_secondary_range_name = null
}]
}
private_environment_config {
enable_privately_used_public_ips = true
// Other private environment parameters
}
}
}
Rangos de la subred administrados por el usuario
Para crear rangos administrados por el usuario, haz lo siguiente:
resource "google_composer_environment" "example_environment" {
provider = google-beta
name = "ENVIRONMENT_NAME"
region = "LOCATION"
config {
node_config {
ip_allocation_policy = [{
use_ip_aliases = true
cluster_ipv4_cidr_block = null
services_ipv4_cidr_block = null
cluster_secondary_range_name = POD_IP_RANGE_NAME
services_secondary_range_name = SERVICES_IP_RANGE_NAME
}]
}
private_environment_config {
enable_privately_used_public_ips = true
// Other private ip environment parameters
}
}
Reemplaza lo siguiente:
ENVIRONMENT_NAME
por el nombre del entorno.LOCATION
por la región en la que se encuentra el entornoPOD_IP_RANGE_NAME
por el nombre de un rango de direcciones IP secundario existente en la subred especificada. Los pods usan este rango.SERVICES_IP_RANGE_NAME
por el nombre de un rango de direcciones IP secundario existente en la subred especificada. Los servicios usan este rango.
Ejemplo:
resource "google_composer_environment" "example_environment" {
provider = google-beta
name = "example-environment"
region = "us-central1"
config {
node_config {
// Specify your network and subnetwork
network = google_compute_network.example_network.id
subnetwork = google_compute_subnetwork.example_subnet.id
ip_allocation_policy = [{
use_ip_aliases = true
cluster_ipv4_cidr_block = null
services_ipv4_cidr_block = null
// Specify existing ranges
cluster_secondary_range_name = "public-1"
services_secondary_range_name = "public-2"
}]
}
private_environment_config {
enable_privately_used_public_ips = true
// Other private environment parameters
}
}
}