Configure intervalos de IPs públicos usados de forma privada

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-2.13.9-airflow-2.10.5 \
    --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-2.13.9-airflow-2.10.5 \
    --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-2.13.9-airflow-2.10.5 \
    --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-2.13.9-airflow-2.10.5 \
    --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": {
        "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": {
        "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": {
        "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": {
        "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 = [{
        
        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 = [{
        
        // 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 = [{
        
        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 = [{
        
        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
    }

  }
}

O que se segue?