Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
Esta página explica como usar intervalos de IP público usado de forma privada no seu ambiente de IP privado. Para ver informações gerais sobre a criação de ambientes de IP privado, consulte o artigo Configure um ambiente de IP privado.
Acerca dos intervalos de IP públicos usados de forma privada no Cloud Composer
O Google Kubernetes Engine requer muitos endereços IP para os respetivos recursos: cada nó, pod e serviço tem de ter um endereço IP único. Isto pode levar a uma situação em que os intervalos de IP privados existentes não conseguem acomodar endereços IP suficientes.
Os ambientes do Cloud Composer podem usar alguns intervalos de IP do espaço de endereços não RFC 1918 sem configuração adicional.
Se quiser usar mais endereços IP, o seu ambiente pode usar de forma privada determinados intervalos de endereços IP públicos como intervalos de endereços IP de sub-redes para pods e serviços. Estes intervalos são denominados intervalos de IP público usado de forma privada (PUPI).
Pode usar de forma privada qualquer endereço IP público, exceto determinados intervalos restritos.
Antes de começar
Só pode especificar intervalos de IPs públicos quando cria um novo ambiente. Não é possível alterar os intervalos de IP de um ambiente existente.
O seu ambiente tem de ser um ambiente de IP privado.
Pode criar ambientes com intervalos de PUPI apenas através do
gcloud
, do Terraform e da API REST.Apenas os pods e os serviços do GKE podem usar intervalos de IPs públicos. Outros componentes do ambiente, como o Cloud SQL, o servidor Web e o plano de controlo do GKE, não podem usar intervalos de IP públicos num ambiente de IP privado.
O cluster do GKE é criado com o SNAT predefinido desativado.
Ative os intervalos PUPI quando criar um ambiente
gcloud
Para criar um ambiente com intervalos PUPI, use o argumento --enable-privately-used-public-ips
quando criar um ambiente de IP privado. Em seguida, especifique os intervalos de IP públicos para pods e serviços.
Intervalos de sub-redes geridos pelo GKE
Para criar intervalos de sub-redes geridos 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
Substituir:
ENVIRONMENT_NAME
com o nome do ambiente.LOCATION
com a região onde o ambiente está localizado.POD_IP_RANGE
com um intervalo de endereços IP na notação CIDR. Este intervalo é adicionado como um intervalo de endereços IP secundário ao subnetwork do seu ambiente e é usado como o intervalo de endereços IP para pods.SERVICES_IP_RANGE
com um intervalo de endereços IP na notação CIDR. Este intervalo é o intervalo de endereços IP secundário para serviços na sub-rede do seu 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-redes geridos pelo utilizador
Para criar intervalos geridos pelo utilizador:
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
Substituir:
ENVIRONMENT_NAME
com o nome do ambiente.LOCATION
com a região onde o ambiente está localizado.POD_IP_RANGE_NAME
com o nome de um intervalo de endereços IP secundários existente na sub-rede especificada. Este intervalo é usado por pods.SERVICES_IP_RANGE_NAME
com o nome de um intervalo de endereços IP secundários existente na sub-rede especificada. Este intervalo é usado por 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
Construa um pedido de API environments.create
. No recurso Environment, especifique os parâmetros de configuração para um ambiente com intervalos de PUPI.
Intervalos de sub-redes geridos pelo GKE
Para criar intervalos de sub-redes geridos 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
}
}
}
Substituir:
ENVIRONMENT_NAME
com o nome do ambiente.POD_IP_RANGE
com um intervalo de endereços IP na notação CIDR. Este intervalo é adicionado como um intervalo de endereços IP secundário ao subnetwork do seu ambiente e é usado como o intervalo de endereços IP para pods.SERVICES_IP_RANGE
com um intervalo de endereços IP na notação CIDR. Este intervalo é o intervalo de endereços IP secundário para serviços na sub-rede do seu 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-redes geridos pelo utilizador
Para criar intervalos geridos pelo utilizador:
// 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
}
}
}
Substituir:
ENVIRONMENT_NAME
com o nome do ambiente.POD_IP_RANGE_NAME
com o nome de um intervalo de endereços IP secundários existente na sub-rede especificada. Este intervalo é usado por pods.SERVICES_IP_RANGE_NAME
com o nome de um intervalo de endereços IP secundários existente na sub-rede especificada. Este intervalo é usado por 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 cria um ambiente, o campo enable_privately_used_public_ips
no bloco private_environment_config
permite a utilização de intervalos de PUPI. Também tem de especificar intervalos de PUPI para agrupamentos e serviços.
Intervalos de sub-redes geridos pelo GKE
Para criar intervalos de sub-redes geridos 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
}
}
}
Substituir:
ENVIRONMENT_NAME
com o nome do ambiente.LOCATION
com a região onde o ambiente está localizado.POD_IP_RANGE
com um intervalo de endereços IP na notação CIDR. Este intervalo é adicionado como um intervalo de endereços IP secundário ao subnetwork do seu ambiente e é usado como o intervalo de endereços IP para pods.SERVICES_IP_RANGE
com um intervalo de endereços IP na notação CIDR. Este intervalo é o intervalo de endereços IP secundário para serviços na sub-rede do seu 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-redes geridos pelo utilizador
Para criar intervalos geridos pelo utilizador:
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
}
}
Substituir:
ENVIRONMENT_NAME
com o nome do ambiente.LOCATION
com a região onde o ambiente está localizado.POD_IP_RANGE_NAME
com o nome de um intervalo de endereços IP secundários existente na sub-rede especificada. Este intervalo é usado por pods.SERVICES_IP_RANGE_NAME
com o nome de um intervalo de endereços IP secundários existente na sub-rede especificada. Este intervalo é usado por 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
}
}
}