Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3
Nesta página, explicamos como usar intervalos de IP público de uso particular no ambiente de IP particular. Para informações gerais sobre como criar ambientes de IP particular, consulte Configurar um ambiente de IP particular.
Sobre intervalos de IP públicos usados de maneira particular no Cloud Composer
O Google Kubernetes Engine requer muitos endereços IP para os recursos: cada nó, pod e serviço precisa ter um endereço IP exclusivo. Isso pode levar a uma situação em que os intervalos de IP particulares existentes não acomodam endereços IP suficientes.
Os ambientes do Cloud Composer podem usar alguns intervalos de IP do espaço de endereço não RFC 1918 sem configuração extra.
Se você quiser usar mais endereços IP, seu ambiente poderá usar de maneira particular determinados intervalos de endereços IP públicos como intervalos de endereços IP de sub-rede internos para pods e serviços. Esses intervalos são chamados de intervalos de IP público de uso particular (PUPI).
É possível usar qualquer endereço IP público de maneira particular, exceto determinados intervalos restritos.
Antes de começar
Só é possível especificar intervalos de IP públicos ao criar um novo ambiente. Não é possível alterar intervalos de IP de um ambiente existente.
Seu ambiente precisa ser um ambiente de IP particular.
Só é possível criar ambientes com intervalos de PUPI usando
gcloud
, Terraform e a API REST.Somente pods e serviços do GKE podem usar intervalos de IP públicos. Outros componentes de ambiente, como o Cloud SQL, o servidor da Web e o plano de controle do GKE, não podem usar intervalos de IP públicos em um ambiente de IP particular.
O cluster do GKE é criado com o SNAT padrão desativado.
Ativar intervalos de PUPI ao criar um ambiente
gcloud
Para criar um ambiente com intervalos de PUPI, use o
argumento --enable-privately-used-public-ips
ao criar um ambiente de
IP particular. Em seguida, especifique intervalos de IP públicos para pods e serviços.
Intervalos de sub-rede gerenciados pelo GKE
Para criar intervalos de sub-redes gerenciados pelo GKE:
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
Substitua:
ENVIRONMENT_NAME
pelo nome do ambienteLOCATION
pela região em que o ambiente está localizado;POD_IP_RANGE
por um intervalo de endereços IP na notação CIDR. Esse intervalo é adicionado como um intervalo de endereços IP secundário à sub-rede do ambiente e é usado como o intervalo de endereços IP dos pods.SERVICES_IP_RANGE
por um intervalo de endereços IP na notação CIDR. Esse intervalo é o intervalo de endereços IP secundário dos serviços na sub-rede do ambiente.
Exemplo:
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
Intervalos de sub-rede gerenciadas pelo usuário
Para criar intervalos gerenciados pelo usuário:
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
Substitua:
ENVIRONMENT_NAME
pelo nome do ambienteLOCATION
pela região em que o ambiente está localizado;POD_IP_RANGE_NAME
pelo nome de um intervalo atual de endereços IP secundários na sub-rede especificada. Esse intervalo é usado por pods.SERVICES_IP_RANGE_NAME
pelo nome de um intervalo atual de endereços IP secundários na sub-rede especificada. Esse intervalo é usado pelos serviços.
Exemplo:
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
Crie
uma solicitação de API environments.create
. No
recurso Ambiente, especifique os parâmetros de configuração
para um ambiente com intervalos PUPI.
Intervalos de sub-rede gerenciados pelo GKE
Para criar intervalos de sub-redes gerenciados pelo GKE:
// 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
}
}
}
Substitua:
ENVIRONMENT_NAME
pelo nome do ambiente;POD_IP_RANGE
por um intervalo de endereços IP na notação CIDR. Esse intervalo é adicionado como um intervalo de endereços IP secundário à sub-rede do ambiente e é usado como o intervalo de endereços IP dos pods.SERVICES_IP_RANGE
por um intervalo de endereços IP na notação CIDR. Esse intervalo é o intervalo secundário de endereços IP dos serviços na sub-rede do ambiente.
Exemplo:
// 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
}
}
}
Intervalos de sub-rede gerenciadas pelo usuário
Para criar intervalos gerenciados pelo usuário:
// 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
}
}
}
Substitua:
ENVIRONMENT_NAME
pelo nome do ambiente;POD_IP_RANGE_NAME
pelo nome de um intervalo atual de endereços IP secundários na sub-rede especificada. Esse intervalo é usado por pods.SERVICES_IP_RANGE_NAME
pelo nome de um intervalo atual de endereços IP secundários na sub-rede especificada. Esse intervalo é usado pelos serviços.
Exemplo:
// 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
Quando você cria um ambiente, o campo enable_privately_used_public_ips
no bloco private_environment_config
ativa o uso de intervalos
PUPI. Você também precisa especificar intervalos PUPI para pods e serviços.
Intervalos de sub-rede gerenciados pelo GKE
Para criar intervalos de sub-redes gerenciados pelo GKE:
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
}
}
}
Substitua:
ENVIRONMENT_NAME
pelo nome do ambienteLOCATION
pela região em que o ambiente está localizado;POD_IP_RANGE
por um intervalo de endereços IP na notação CIDR. Esse intervalo é adicionado como um intervalo de endereços IP secundário à sub-rede do ambiente e é usado como o intervalo de endereços IP dos pods.SERVICES_IP_RANGE
por um intervalo de endereços IP na notação CIDR. Esse intervalo é o intervalo de endereços IP secundário dos serviços na sub-rede do ambiente.
Exemplo:
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
}
}
}
Intervalos de sub-rede gerenciadas pelo usuário
Para criar intervalos gerenciados pelo usuário:
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
}
}
Substitua:
ENVIRONMENT_NAME
pelo nome do ambienteLOCATION
pela região em que o ambiente está localizado;POD_IP_RANGE_NAME
pelo nome de um intervalo atual de endereços IP secundários na sub-rede especificada. Esse intervalo é usado por pods.SERVICES_IP_RANGE_NAME
pelo nome de um intervalo atual de endereços IP secundários na sub-rede especificada. Esse intervalo é usado pelos serviços.
Exemplo:
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
}
}
}